This script shows how to set the SMS site comment for a secondary site. The script demonstrates how a script that manipulates site settings at one site can change the properties for another site that reports to the first site, even if the other site reports indirectly to the first site.

The ConnectServer line connects to the parent site, but the line that refreshes the script’s copy of the site control file and the line that gets the site definition both get the child site’s site control file. When the changes are committed, the child site is again specified.


Dim objSWbemLocator
Dim objSWbemServices
Dim objSWbemContext
Dim LocalSiteCode
Dim SiteToChange

LocalSiteCode = "SITECODE"

Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServices = objSWbemLocator.ConnectServer( , "root\sms\site_" & LocalSiteCode )

Set objSWbemContext = CreateObject("WbemScripting.SWbemNamedValueSet")
objSWbemContext.Add "SessionHandle", objSWbemServices.ExecMethod("SMS_SiteControlFile", "GetSessionHandle").SessionHandle
objSWbemServices.ExecMethod "SMS_SiteControlFile.Filetype=1,Sitecode=""" & SiteToChange & """", "Refresh", , , objSWbemContext
Set WbemInst = objSWbemServices.Get("SMS_SCI_SiteDefinition.Filetype=1,Itemtype='Site Definition',Sitecode='" & SiteToChange & "',ItemName='Site Definition'", , objSWbemContext)

proparray = WbemInst.props
WScript.Echo sitecode & " site comment: " & proparray(0).Value1
proparray(0).Value1 = "Set from script"
WbemInst.props = proparray

WbemInst.Put_ , objSWbemContext
objSWbemServices.ExecMethod "SMS_SiteControlFile.Filetype=1,Sitecode=""" & SiteToChange & """", "Commit", , , objSWbemContext
objSWbemServices.Get("SMS_SiteControlFile").ReleaseSessionHandle objSWbemContext.Item("SessionHandle").Value

Compiling the Code

  • Requires Windows 2000 Server SP2 or later.

  • Requires an SMS 2003 Site Server.

See Also