I wanted to wake up all the machines in a collection using a vbscript. I know that SCCM has this built in, but I could not get it working. To troubleshoot I figured I would write a script to get collection members, and then wake them via the command line with this tool: http://www.gammadyne.com/cmdline.htm#wol
GetCollectionMembers "XXX00018"
Sub GetCollectionMembers (COLLECTION_NAME)
Set objLocation = CreateObject("WbemScripting.SWbemLocator")
Set objService = objLocation.ConnectServer("SERVERNAME", "root\SMS\site_XXX")
strQuery = "SELECT * FROM SMS_FullCollectionMembership WHERE CollectionID = '" & COLLECTION_NAME & "'"
Set objSourceCollectionMembers = objService.ExecQuery(strQuery)
For Each Resource In objSourceCollectionMembers
WakeMachine objService,Resource.ResourceID
Next
End Sub
Sub WakeMachine (objService,ResourceID)
Set Machines = objService.ExecQuery("Select * From SMS_R_System where ResourceID =" & ResourceID)
For Each Machine In Machines
Set objShell = CreateObject("Wscript.Shell")
strCurrentDir = Replace(WScript.ScriptFullName,WScript.ScriptName,"")
strCommand = strCurrentDir & "\wol.exe " & Replace(Machine.MACAddresses(0),":","")
Set objExecObject = objShell.Exec(strCommand)
Next
End Sub
Comments are closed.