[download id=”40″]
When we are deploying OS via ConfigMgr, we usually do a cleanup of all old objects before creating the new object.
This helps prevent errors and mistakes, and is pretty easy to do.
We are able to use both SMBOIS GUID and Mac addresses for the cleanup.
usually I recommend using mac addresses, since I have experienced that laptops who have had their mainboard exchanged, have the BIOS GUID of “0000-00000-0000-0000”, this happens because the repair shop forgets to write in the GUID after the repair.
The mac addresses are always usable , since they are not typed in by hand.
Problem by using the mac adresses is that there is more than on each, therefore I have made this script that does a cleanup of All computer objects in the SCCM, checking for All of the Mac Addresses.
This script can be used of difference purposes.
1. Trobuleshooting. if you are having problems with the configmgr account of a specific PC. Run this script on the PC, and the configmgr will be cleaned up, which might solve your problems.
2. Deployment. Run this script in WinPE as a part of new deployment of an already exiting PC, to make sure that all old objects are gone, before reinstalling.
' //***************************************************************************
' // ***** Script Header *****
' //
' // File: CleanupLocalPCMac.vbs
' // Author: Jakob Gottlieb Svendsen, Coretech A/S. https://blog.ctglobalservices.com
' // Purpose: Cleanup all objects in ConfigMgr, using all local Mac Addresses
' //
' // NOTICE: SMBIOSGUID could have been used instead, but sometimes
' // a computer has a guid that only conains zeros, and it would cause
' // other objects to be deleted too.
' //
' //
' // CORETECH A/S History:
' // 1.0.0 JGS 24/03/2011 Created initial version.
' //
' // Customer History:
' //
' // ***** End Header *****
' //***************************************************************************
'//----------------------------------------------------------------------------
'//
'// Global constant and variable declarations
'//
'//----------------------------------------------------------------------------
SCCM_SERVER = "CTSCCM01"
strUsername = Null
strPassword = Null
Dim strSiteCode, swbemServices
'//----------------------------------------------------------------------------
'// Main routines
'//----------------------------------------------------------------------------
' Set up a connection to the local provider.
WriteLog "Script started: " & Now
Set swbemLocator = CreateObject("WbemScripting.SWbemLocator")
'Connect to local SCCM
ConnectionStatus = Connect(swbemServices,strSiteCode,SCCM_SERVER,strUsername,strPassword)
If ConnectionStatus <> "OK" Then
WriteLog "Connection to local ConfigMgr: " & SCCM_SERVER & " Problem" & vbCrLf & ConnectionStatus
Else
WriteLog "Connection to local ConfigMgr etablished"
End if
CleanupComputerObjectForLocalPCByMac swbemServices
'//----------------------------------------------------------------------------
'// Procedures
'//----------------------------------------------------------------------------
Function CleanupComputerObjectForLocalPCByMac(connection)
'On Error Resume Next
WriteLog "Checking for old computer objects via Mac and GUID..."
'Delete via Mac Addresses
'Setup local WMI connection
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set IPConfigSet = objWMIService.ExecQuery("SELECT MACAddress, Caption FROM Win32_NetworkAdapterConfiguration " )
For Each IPConfig In IPConfigSet
' Build the query
Mac = IPConfig.MacAddress
'vmware machines all have the same Mac, skip them.
If Not IPConfig.MacAddress = Null Then
If InStr(UCase(IPConfig.Caption),"VMWARE") = 0 Then
WriteLog "Checking adapter: " & IPConfig.Caption & " Mac:" & IPConfig.MacAddress
sQuery = "SELECT * FROM SMS_R_System WHERE MacAddresses = '" & IPConfig.MacAddress & "'" 'and Active = 1"
' Process the query
'Get ResourceID
Set oClients = connection.ExecQuery(sQuery)
For Each oClient In oClients
Err.Clear
'Get the computer settings object.
WriteLog "Deleting computerobject name: " & oClient.Name & " resourceID: " & oClient.ResourceID & " via MacAddress: " & IPConfig.MacAddress
oClient.Delete_
If Err.Number <> 0 Then
WriteLog "Delete Error: " & Err.Description & " - Number: " & Err.Number
Err.Clear
End If
Next
Else
WriteLog "Skipping adapter: " & IPConfig.Caption & " Mac:" & IPConfig.MacAddress & " - VMWare default mac address"
End If
Else
WriteLog "Skpping adapter: " & IPConfig.Caption & " - no mac address"
End If
Next
End Function
Function Connect (swbemServices, sitecodevar, hostname, username, password)
On Error Resume Next
Set swbemServices = swbemLocator.ConnectServer(hostname, "root\sms",username,password)
If Err <> 0 Then
'Connect = "Error: " & Err.Number & " - " & Err.Description
Connect = "Error: " & Err.Description
Exit Function
End If
Set providerLoc = swbemServices.InstancesOf("SMS_ProviderLocation")
If Err <> 0 Then
'Connect = "Error: " & Err.Number & " - " & Err.Description
Connect = "Error: " & Err.Description
Exit Function
End If
For Each objLocation In providerLoc
If objlocation.ProviderForLocalSite = True Then
Set swbemServices = swbemLocator.ConnectServer(objlocation.Machine, "root\sms\site_" + objlocation.SiteCode,username,password)
sitecodevar = objlocation.SiteCode
If Err <> 0 Then
'Connect = "Error: " & Err.Number & " - " & Err.Description
Connect = "Error: " & Err.Description
Exit Function
End If
End If
Next
Connect = "OK"
End Function
Function WriteLog(strMessage)
Const ForAppending = 8
strScriptLocation = Replace(WScript.ScriptFullName,WScript.ScriptName,"")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile(strScriptLocation & "cleanup.log", ForAppending, True)
objTextFile.WriteLine strMessage
objTextFile.Close
Set objTextFile = Nothing
Set objFSO = Nothing
End Function
'//----------------------------------------------------------------------------
'// House Cleaning
'//----------------------------------------------------------------------------
Set swbemServices = Nothing
Set swbemLocator = Nothing
WriteLog "Script End"
'//----------------------------------------------------------------------------
'// End Script
'//----------------------------------------------------------------------------
Hello,
I have a Win7 x64 System here and it seems script doesnt work there:
Script started: 13.04.2012 10:30:27
Connection to local ConfigMgr etablished
Checking for old computer objects via Mac and GUID…
Skpping adapter: [00000000] WAN Miniport (SSTP) – no mac address
Skpping adapter: [00000001] WAN Miniport (IKEv2) – no mac address
Skpping adapter: [00000002] WAN Miniport (L2TP) – no mac address
Skpping adapter: [00000003] WAN Miniport (PPTP) – no mac address
Skpping adapter: [00000004] WAN Miniport (PPPOE) – no mac address
Skpping adapter: [00000005] WAN Miniport (IPv6) – no mac address
Skpping adapter: [00000006] WAN Miniport (Network Monitor) – no mac address
Skpping adapter: [00000007] Intel(R) 82566DM-2 Gigabit Network Connection – no mac address
Skpping adapter: [00000008] WAN Miniport (IP) – no mac address
Skpping adapter: [00000009] Microsoft ISATAP Adapter – no mac address
Skpping adapter: [00000010] RAS Async Adapter – no mac address
Skpping adapter: [00000011] Intel(R) PRO/100 S Desktop Adapter – no mac address
Skpping adapter: [00000012] Intel(R) PRO/100 S Desktop Adapter – no mac address
Script End
Any idea?
Thanks for your help!
I tried this to but worked allright for me, except of some registery errors I get when trying to update some modules.
The Blue screen still pops up when I start my pc.
After trying almost everything I downloaded Fix my PC and everything is as new.
You can read more here http://tinyurl.com/boogyej.