Thursday, May 22, 2014

Dell Connection License Manager 1.0 with Dell SCOM Management Pack 5.1

Here are some tips for getting the Server OOB licensing to work when you install the Dell SCOM MP and connect to the Dell Connections License Manager.

****Update: This issue has been resolved with DCLM 1.1.  DCLM 1.1 was released 5/23/2014 and the Dell SCOM MP 5.2 was released on 5/8/2014.****

Using Dell SCOM MP 5.1 and DCLM 1.0

1. Install DCLM on the SCOM server if possible.
2. Make sure you have the correct type of license imported into DCLM.  It should read "Dell Server Management Pack Suite for System Center Operations Manager. This license is for monitoring X server via out of band".
3. Use the same AD account for the Dell Device Helper COM+ object and the Operations Manager Action Account.

4. And here is the big tip.  That same AD account should be put directly into the Dell Connection License Manager Administrator group in Active Directory.  You cannot put the account in a group and nest that group in the DCLM Adminsistrators group.  It will not work.  The Action Account must be directly in the DCLM Administrators group.

5. From the Dell Feature Management Dashboard in SCOM, make sure you can Launch the Dell Connections License Manager (in the lower right Task pane) and you can see the licenses in DCLM once it opens.  You may need to add the URL to your Trusted Sites.

6. Refresh the Dashboard and your licenses for Out-of-Band Monitoring should show up correctly under Dell Feature Management Dashboard.

Wednesday, September 7, 2011

How to move WSUS from SQL 2005 to SQL 2008 R2

I needed to move my WSUS database from SQL 2005 to a new SQL 2008 R2 server.  It was difficult to find the exact directions online so I hashed together some from several places and it worked just fine.  Here's how.

1. On the WSUS server, stop the "IIS Admin" service and "Update Services" service from services.msc.
2. On the SQL 2005 server, backup the SUSDB.
     Right click on the running SUSDB database in SQL Management Studio and select All Tasks -> Backup.
     Database = SUSDB
     Backup Type = Full
     Destination =  Disk.  I chose the desktop.
     Options Page = I selected to Verify the database when finished.  Press OK.

3. Copy the database over to the new SQL 2008 R2 server.
4. On the new SQL 2008 R2 server, open SQL Management Studio and connect to the database engine.  Then click on New Query.
5. Type in the following and then execute by pressing the green checkmark in the toolbar:
USE MASTER
GO
ALTER DATABASE SUSDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
DROP DATABASE SUSDB
GO

6. Once that is done right click on Databases and select Restore Database.
     To database = SUSDB
     From database = From device and then find the file you copied over from the old SQL server.
     Under Select the backup sets to restore = put a check mark next to the SUSDB database to restore.
     Press OK.

7. Back on the WSUS server, open regedit.exe and navigate to HKLM\Software\Microsoft\UpdateServices\Server.  Find the SqlServerName object and change that to the name of your new SQL server.
8. Restart the "IIS Admin" and "Update Services" services.
9. Open WSUS admin console and give it a moment to connect.

That's it.  It worked perfectly for me and was really easy to do.

Thursday, April 28, 2011

SCCM client install fix

I recently had to add the SCCM client to a bunch of machines from a non-trusted domain to manage them because the group previously tasked with those machines could no longer handle it.  The majority of the machines installed correctly but some did not.  This fix takes a couple minutes but has fixed all of my client issues so far.

1. Check the CCMInstall\Logs\ folder.  Look at the logs, in particular look at ccmexec, clientIDmanagerstartup, and locationservices logs.  Also look at the ccmsetup folder for the ccmsetup.log and client.msi.log.  These logs can help you pinpoint the reasons for the installation problems.

2. If you see errors like "Unable to retrieve AMP for site code" in the CCMInstall\logs\LocationServices.log, the install may see more than 1 client certificate and not be able to pick one.  If you AD automatically enrolls the machines and issues a new cert, you can run mmc, add the certificates snap-in for the computer account, and remove the client certificates under personal.  If you can't delete those add CCMFIRSTCERT=1 to the client install options.  There are some other things you can do also to make sure the correct certificates are available on the untrusted client.

3. Uninstall the SCCM client if it already exists but isn't working correctly.  Go to a cmd window and change to the ccmsetup folder.  run ccmsetup.exe /uninstall.

4. (optional and I haven't seen any effects from not using it)  CCMClean does still work in SCCM 2007.  You can download the SMS2003ToolKit and copy just that one tool.  It helps remove registry links and orphaned files if any.

5. Cmd window and run "net stop winmgmt".  You may have to run this twice to get it to stop because sometimes the service will start again immediately.  As soon as it stops rename the c:\windows\system32\wbem\repository folder to oldrepository.  This will reset WMI when the service restarts which we will do with a reboot in a minute.

6. Delete the c:\windows\system32\ccm and ccmsetup folders on 32bit machines or the c:\windows\syswow64\ccm folder on 64bit machines.

7. Restart the machine and you will have a repaired WMI and ready for a clean install of the SCCM client.

Friday, April 15, 2011

Change in how to apply Patch with SCCM Client push

There used to be a couple of articles online explaining how to add the PATCH=... command to the Client Push installation properties, but those articles have disappeared.  I also began seeing error 1635 on machines trying to install with that argument.

The new way to add a patch, such as http://support.microsoft.com/kb/977384, is this:

In the Client source folder (%installdir%\Microsoft Configuration Manager\Client) create a folder called ClientPatch.  Copy the .msp file into that folder.

So it looks like this:
E:\
    Microsoft Configuration Manager\
          Client\
                ClientPatch\
                        sccm2007ac-sp2-kb977384-x86-enu.msp

That's it.  SCCM will automatically try to install any .msp files you put in that folder when the Client is pushed to machines.  Once I changed to that and removed the PATCH argument, my client pushes started working again.

Wednesday, April 6, 2011

Windows Malicious Software Removal Tool and SCCM Software Updates

The MSRT was not designed to be pushed as a regular update through SCCM Software Updates.  If you put it in an SU deployment package your machines will fail to install and will notify the users repeatedly that it failed.  If you want to push this update each month, you can do so with Group Policy or as a Software Package in SCCM.  Here is the related Technet article.

http://support.microsoft.com/?kbid=891716

Tuesday, November 16, 2010

Java 6 Update 22 partial installs

I went to push out Java 6 Update 22 with SCCM found that the MSI no longer works and was reporting a success even though it hadn't fully installed.  Sun decided to make the install a multi-part install and the MSI that we used to extract is only part of the application.  This left me with several machines with half of a working Java install but a successful report back from almost all of them.

I did some searching and found that supposedly you could pass the old MSI arguments to the jre-6u22-windows-i586-s.exe and gave that a try only to find that they didn't work.  Guess I should have known that one ahead of time.  In testing and troubleshooting I found that some of the Java 6 U 22 installs wouldn't even uninstall.  So I came up with a quick and dirty little script that removes the files and registry keys and then reinstalls the full package.  I will walk you through each of these steps.  Each of the files is pasted below and separated by ===.

I created 2 SCCM programs under the Sun Java Package.  1. is the uninstall and 2. is the reinstall.  One advertisement for all of it calls the uninstall program first and then the reinstall command line.

Uninstall:
The first thing we do is stop the jqs, copy over the vbs that does the uninstall of lots of previous packages and run it.  Then we remove the registry keys and java folders for Update22.  At the end we delete the uninstall.vbs.

Uninstall.bat
========================================================

net stop "java quick starter"

c:
cd\
copy \\sccmserver\fileshare\javauninstall.vbs c:\
javauninstall.vbs

reg delete "HKEY_CLASSES_ROOT\Installer\Products\4EA42A62D9304AC4784BF238120622FF" /f
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products\4EA42A62D9304AC4784BF238120622FF" /f
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{26A24AE4-039D-4CA4-87B4-2F83216022FF}" /f
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft" /f
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\JreMetrics" /f

rd "%programfiles%\java" /s /q
rd "%programfiles% (x86)\java" /s /q

del c:\javauninstall.vbs
=========================================================

javauninstall.vbs
=========================================================

Set objWshShell = WScript.CreateObject("WScript.Shell")
On Error Resume Next

' Java(TM) 6 Update 21 removal.
objWshShell.Run "msiexec /x {26A24AE4-039D-4CA4-87B4-2F83216021FF} /qn", 1, True
objWshShell.Run "msiexec /x {26A24AE4-039D-4CA4-87B4-2F83216021F0} /qn", 1, True

' Java(TM) 6 Update 20 removal.
objWshShell.Run "msiexec /x {26A24AE4-039D-4CA4-87B4-2F83216020FF} /qn", 1, True
objWshShell.Run "msiexec /x {26A24AE4-039D-4CA4-87B4-2F83216020F0} /qn", 1, True

' Java(TM) 6 Update 19 removal.
objWshShell.Run "msiexec /x {26A24AE4-039D-4CA4-87B4-2F83216019FF} /qn", 1, True
objWshShell.Run "msiexec /x {26A24AE4-039D-4CA4-87B4-2F83216019F0} /qn", 1, True

' Java(TM) 6 Update 18 removal.
objWshShell.Run "msiexec /x {26A24AE4-039D-4CA4-87B4-2F83216018FF} /qn", 1, True
objWshShell.Run "msiexec /x {26A24AE4-039D-4CA4-87B4-2F83216018F0} /qn", 1, True

' Java(TM) 6 Update 17 removal.
objWshShell.Run "msiexec /x {26A24AE4-039D-4CA4-87B4-2F83216017FF} /qn", 1, True
objWshShell.Run "msiexec /x {26A24AE4-039D-4CA4-87B4-2F83216017F0} /qn", 1, True

' Java(TM) 6 Update 16 removal.
objWshShell.Run "msiexec /x {26A24AE4-039D-4CA4-87B4-2F83216016FF} /qn", 1, True
objWshShell.Run "msiexec /x {26A24AE4-039D-4CA4-87B4-2F83216016F0} /qn", 1, True

' Java(TM) 6 Update 15 removal.
objWshShell.Run "msiexec /x {26A24AE4-039D-4CA4-87B4-2F83216015FF} /qn", 1, True
objWshShell.Run "msiexec /x {26A24AE4-039D-4CA4-87B4-2F83216015F0} /qn", 1, True

' Java(TM) 6 Update 14 removal.
objWshShell.Run "msiexec /x {26A24AE4-039D-4CA4-87B4-2F83216014FF} /qn", 1, True
objWshShell.Run "msiexec /x {26A24AE4-039D-4CA4-87B4-2F83216014F0} /qn", 1, True

' Java(TM) 6 Update 13 removal.
objWshShell.Run "msiexec /x {26A24AE4-039D-4CA4-87B4-2F83216013FF} /qn", 1, True
objWshShell.Run "msiexec /x {26A24AE4-039D-4CA4-87B4-2F83216013F0} /qn", 1, True

' Java(TM) 6 Update 12 removal.
objWshShell.Run "msiexec /x {26A24AE4-039D-4CA4-87B4-2F83216012FF} /qn", 1, True
objWshShell.Run "msiexec /x {26A24AE4-039D-4CA4-87B4-2F83216012F0} /qn", 1, True

' Java(TM) 6 Update 11 removal.
objWshShell.Run "msiexec /x {26A24AE4-039D-4CA4-87B4-2F83216011FF} /qn", 1, True
objWshShell.Run "msiexec /x {26A24AE4-039D-4CA4-87B4-2F83216011F0} /qn", 1, True

' Java(TM) 6 Update 10 removal.
objWshShell.Run "msiexec /x {26A24AE4-039D-4CA4-87B4-2F83216010FF} /qn", 1, True
objWshShell.Run "msiexec /x {26A24AE4-039D-4CA4-87B4-2F83216010F0} /qn", 1, True

' Java(TM) 6 Update 7 removal.
objWshShell.Run "msiexec /x {3248F0A8-6813-11D6-A77B-00B0D0160070} /qn", 1, True

' Java(TM) 6 Update 6 removal.
objWshShell.Run "msiexec /x {3248F0A8-6813-11D6-A77B-00B0D0160060} /qn", 1, True

' Java(TM) 6 Update 5 removal.
objWshShell.Run "msiexec /x {3248F0A8-6813-11D6-A77B-00B0D0160050} /qn", 1, True

' Java(TM) 6 Update 4 removal.
objWshShell.Run "msiexec /x {3248F0A8-6813-11D6-A77B-00B0D0160040} /qn", 1, True

' Java(TM) 6 Update 3 removal.
objWshShell.Run "msiexec /x {3248F0A8-6813-11D6-A77B-00B0D0160030} /qn", 1, True

' Java(TM) 6 Update 2 removal.
objWshShell.Run "msiexec /x {3248F0A8-6813-11D6-A77B-00B0D0160020} /qn", 1, True

' Java(TM) 6 Update 1 removal.
objWshShell.Run "msiexec /x {3248F0A8-6813-11D6-A77B-00B0D0160010} /qn", 1, True

' Java(TM) 6 removal.
objWshShell.Run "msiexec /x {3248F0A8-6813-11D6-A77B-00B0D0160000} /qn", 1, True

' J2SE Runtime Environment 5.0 Update 12 removal.
objWshShell.Run "msiexec /x {3248F0A8-6813-11D6-A77B-00B0D0150120} /qn", 1, True

' J2SE Runtime Environment 5.0 Update 11 removal.
objWshShell.Run "msiexec /x {3248F0A8-6813-11D6-A77B-00B0D0150110} /qn", 1, True

' J2SE Runtime Environment 5.0 Update 10 removal.
objWshShell.Run "msiexec /x {3248F0A8-6813-11D6-A77B-00B0D0150100} /qn", 1, True

' J2SE Runtime Environment 5.0 Update 9 removal.
objWshShell.Run "msiexec /x {3248F0A8-6813-11D6-A77B-00B0D0150090} /qn", 1, True

' J2SE Runtime Environment 5.0 Update 6 removal.
objWshShell.Run "msiexec /x {3248F0A8-6813-11D6-A77B-00B0D0150060} /qn", 1, True

' J2SE Runtime Environment 5.0 Update 4 removal.
objWshShell.Run "msiexec /x {3248F0A8-6813-11D6-A77B-00B0D0150040} /qn", 1, True

wscript.quit
================================================================

Reinstall program:
Put this as your Command Line: jre-6u22-windows-i586-s.exe /quiet /norestart
There are other arguments you can pass too but I wanted quick and dirty to get these machines functional again.
Run whether a user is logged in or not and with administrative rights.
Run the uninstall first and always run it first.
Suppress program notifications.
And then advertise it.

This successfully pushed out Java 6 Update 22 to almost all of my machines.  A friend of mine has published a script that does this more cleanly by first determining if the machine is x86 or x64.  You can find that article and his SCCM MVP blog here: http://sms-hints-tricks.blogspot.com/2010/11/i-was-getting-tired-of-some-of-problems.html

Exchange script in Task Scheduler

Want to run an Exchange script on a schedule?  For example, the script I posted to remove all items in the Deleted Items folder that are more than 30 days old.  If you are running an Exchange CCR, this should be done on a separate role from the mailbox nodes.

First you will have to add a line to the script so that it will know which domain controller to use.  Add these lines below and replace FQDN with that of your own domain controller.


#Sets the Exchange Server to use a specific domain controller.
Set-ExchangeServer -DomainController FQDN


In Windows Server 2008, open the Task Scheduler and create a new task.
Give it a Name and Description
Set the user to run under which should probably be one with Exchange Admin rights.
Check Run whether user is logged on or not
Set your schedule on the Triggers tab such as when you want it to run.
For the Action select Start a Program

I created a batch file with this line.  This will call Powershell with the Exchange extensions and then feed in the script we created for deleting items.

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -PSConsoleFile "C:\Program Files\Microsoft\Exchange Server\bin\exshell.psc1" -command ". 'C:\Program Files\Microsoft\Exchange Server\bin\Exchange.ps1'"; ". 'C:\Scripts\DeletedItems30Days.ps1'"
Program/script: Powershell.exe
Add arguments: -PSConsoleFile "C:\Program Files\Microsoft\Exchange Server\bin\ExShell.Psc1" -Command ". 'C:\Scripts\DeletedItems30Days.ps1'"

Set any Conditions and Settings and press OK.

I get a nice little email every Friday evening with a list of all accounts, the number of items deleted and the amount of space removed from each account, then totals of each at the bottom.