Monday, October 25, 2010

Repairing SCCM Clients with Duplicate GUIDs


After a few weeks off to get some other projects under control, I am back. This week we will address repairing common problems within the SCCM client starting with machines with duplicate GUIDs.
There is no reason to be ashamed when these situations arise in your SCCM sites. These machines can arise for a number of reasons within an organization and no all of them are even due to problems within the SCCM system itself.
Some hardware vendors (Tangent Computers would be one example) are "shortcutting" their manufacturing processes and shipping machines without populating the SMBIOS GUID within their machine BIOS. Then when these machines are imaged, all of the machines end up with the same SCCM GUID as it is based off the SMBIOS GUID. For these machines, you need to not only address the SCCM Client, but also the underlying root cause which is the SMBIOS itself. (Tangent does have a downloadable DOS EXE to randomly generate an SMBIOS GUID on their machines) Another major cause of duplicate SCCM GUIDs is improper imaging techniques where the SCCM client was not fully removed from the "master" image prior to capture.
Luckily regardless of the reason why there is a duplicate GUID, the fix is straightforward and pretty easy. You simply need to remove the SCCM client and all of its history-storing pieces then re-install the client from scratch. The uninstall process can be broken into a number of discrete steps.
  1. Removing the SCCM Client Certs with the ccmdelcert utility
  2. Uninstalling the client software through ccmsetup /uninstall or the latest ccmclean /client
  3. Deleting the %WINDIR%\SMSCFG.ini file
  4. Deleting the %WINDIR%\system32\ccm folder
  5. Deleting the HKLM\Software\Microsoft\CCMSetup key from the registry
  6. Deleting the HKLM\Software\Microsoft\SMS key from the registry
Note: At the bottom of this posting is the contents of an SMS Installer script to accomplish these steps. Just put copies of the ccmclean.exe, ccmdelcert.exe and tranguid.exe from the SMS 2003 Toolkit in the C:\packages\DupGUID\files folder.
For those, like me, that love using the latest SCCM Client Center, unfortunately the uninstall process within that tool does not fully address these steps, so to address these machines remotely you will need to rely on copying the files to the machines and using something like PSEXEC to start them remotely.
Locating which machines need this process done is a straightforward process too. One simply needs to run the Computers that may share the same SMS Unique ID report from the SCCM Reporting Point. Make sure you run this process over all of the machines listed in the report including those appearing in the Name Column, not just the ones in the previous names column.

Note: As the client gets reinstalled on these machines, there will be an "obsolete" record created in the All Systems Collection. The clients will not drop off the Computers that may share the same SMS Unique ID report until this obsolete record is removed.

Script contents below:
Document Type: IPF
item: Global
Version=6.0
Title English=Duplicate SCCM GUID Repair
Flags=00000100
Languages=0 0 65 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
LanguagesList=English
Default Language=2
Copy Default=1
Japanese Font Size=9
Start Gradient=0 0 255
End Gradient=0 0 0
Windows Flags=00000100000000010010110000011000
Message Font=MS Sans Serif
Font Size=8
Disk Filename=SETUP
Patch Flags=0000000000000001
Patch Threshold=85
Patch Memory=4000
FTP Cluster Size=20
end
item: Check Disk Space
end
item: Set Variable
Variable=ROOT
Value=C:
end
item: Get Environment Variable
Variable=WINDIR
Environment=WINDIR
end
item: Install File
Source=C:\packages\DupGUID\files\*.*
Destination=%ROOT%\temp\dupguid
Flags=0000000000100010
end
item: Execute Program
Pathname=%ROOT%\temp\dupguid\ccmdelcert.exe
Default Directory=%ROOT%\temp\dupguid
Flags=00001010
end
item: Delete File
Pathname=%WINDIR%\SMSCFG.ini
end
item: Execute Program
Pathname=%ROOT%\temp\dupguid\ccmclean
Command Line=/client /q
Default Directory=%ROOT%\temp\dupguid
Flags=00001010
end
item: Insert Line into Text File
Pathname=%WINDIR%\system32\ccm\temp.txt
New Text=TEMP
Line Number=0
Flags=00010000
end
item: Delete File
Pathname=%WINDIR%\system32\ccm\temp.txt
Flags=00001100
end
item: Edit Registry
Total Keys=1
Key=SOFTWARE\Microsoft\CCMSetup
Root=130
end
item: Edit Registry
Total Keys=1
Key=SOFTWARE\Microsoft\SMS
Root=130
end

No comments:

Post a Comment