Ryan Smith
asked on
Editing SCCM Colladd.vbs Script
I've been using the colladd.vbs script to add systems to a collection. Im trying to get around using a text file. Intstead i want to be able to input the systems throught the command line with the rest of the arguments (server name, collection ID). If anyone can help me with this it will be much appreciated. I added the code below
***I want to be able to input the system name instead of using the text file***
***I want to be able to input the system name instead of using the text file***
Set fso = CreateObject("Scripting.FileSystemObject")
Set arrArgs = WScript.Arguments
if (arrArgs.Count = 0) Then 'Display Blurb
wscript.echo ("Colladd.vbs v1.0")
wscript.echo ("03/06/03 Mark Nunn")
wscript.echo ("http://mark.nunn.net")
wscript.echo ("Colladd.vbs server filename collectionID - to add from file to collection")
wscript.echo ("Colladd.vbs server - to list collectionID's")
else
on error resume next 'Some error handling
strServer=arrArgs(0) 'set variables from command line
if (arrArgs.Count = 3) Then
strFile=arrArgs(1)
strCollID=arrArgs(2)
end if
Set objLocator = CreateObject("WbemScripting.SWbemLocator")
Set objSMS = objLocator.ConnectServer(strServer, "Root/SMS") 'connect to sms
objSMS.Security_.ImpersonationLevel = 3
wscript.Echo("Connecting to Root/SMS on " & strServer)
set colSiteDetails=objSMS.ExecQuery("select Machine, SiteCode from SMS_ProviderLocation where ProviderForLocalSite=True")
For Each insSiteDetails In colSiteDetails
strSiteCode=insSiteDetails.SiteCode
next
wscript.Echo("Connecting to Root/SMS/site_" & strSiteCode &" on " & strServer)
set objSMS=objLocator.ConnectServer(strServer, "root/SMS/site_" + strSiteCode)
wscript.Echo("Connected")
if (arrArgs.Count < 3) Then 'if not all arguments supplied list colelctions
set colCollections=objSMS.ExecQuery("select CollectionID, Name from SMS_Collection ORDER BY CollectionID")
wscript.echo("CollectionID" & vbTab & "Name")
For Each insCollection In colCollections
wscript.echo(insCollection.CollectionID & VbTab & insCollection.Name)
Next
else 'otherwise add from file
set instColl = objSMS.Get("SMS_Collection.CollectionID="&"""" & strCollID & """")
if Instcoll.Name="" then 'check valid collection
wscript.echo (strCollId &" Not Found")
else
Set filNames = fso.OpenTextFile(strFile) 'open file of machines
if (filNames) then
While not filNames.AtEndOfStream
strMachine=filNames.ReadLine 'read each line and find resource ID
set colNewResources=objSMS.ExecQuery("SELECT ResourceId FROM SMS_R_System WHERE NetbiosName ='" & strMachine & "'")
strNewResourceID = 0
For each insNewResource in colNewResources
strNewResourceID = insNewResource.ResourceID
Next
if strNewResourceID <> 0 then 'if one exists crate a collection rule
Set instDirectRule = objSMS.Get("SMS_CollectionRuleDirect").SpawnInstance_ ()
instDirectRule.ResourceClassName = "SMS_R_System"
instDirectRule.ResourceID = strNewResourceID
instDirectRule.RuleName = "Findres - Replaces " & strResource
instColl.AddMembershipRule instDirectRule , SMSContext
instColl.RequestRefresh False
wscript.echo(strMachine & " Added to " & Instcoll.Name)
else
wscript.echo(strMachine & " Not Found") 'otherwise display error
end if
WEnd 'next line
else
wscript.echo ("Can't Open " & strfile) 'if file not found
end if
end if
end if
end if
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Worked Like a charm!! thanks!!!
ASKER