How to Add SMS Site Boundaries

Published : April 11, 2005

This script creates site boundaries from the proparray values within the script. Any number of boundaries can be created when you add additional proparray values. Valid site boundary types include IP subnet and Active Directory site.

On This Page

Example
Compiling the Code
See Also

Example

 
Dim objSWbemLocator
Dim objSWbemServices
Dim objSWbemContext
Dim objSWbemInst
Dim proparray1
Dim proparray2
Dim Sitecode
Dim inputArray1(2)
Dim inputArray2(2)
Dim i
Dim bounds
Sitecode = "YOURSITECODE"
 
'Add boundaries to this array as you need them.
inputArray1(0)="192.168.1.101"
inputArray2(0)="IP Subnets"
 
inputArray1(1)="TEST 1 SITE"
inputArray2(1)="Active Directory site"
 
Set objSWbemLocator =  CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServices = objSWbemLocator.ConnectServer( , "root\sms\site_" & sitecode )
 
Set objSWbemContext=CreateObject("WbemScripting.SWbemNamedValueSet")
objSWbemContext.Add "SessionHandle", objSWbemServices.ExecMethod("SMS_SiteControlFile", "GetSessionHandle").SessionHandle
objSWbemServices.ExecMethod "SMS_SiteControlFile.Filetype=1,Sitecode='" & Sitecode & "'", "RefreshSCF", , , objSWbemContext
Set objSWbemInst = objSWbemServices.Get("SMS_SCI_SiteAssignment.Filetype=2,Itemtype='Site Assignment',Sitecode='" & Sitecode & "',ItemName='Site Assignment'", , objSWbemContext)
 
'Retrieve the boundary details.
proparray1 = objSWbemInst.AssignDetails
proparray2 = objSWbemInst.AssignTypes
 
if ubound(objSWbemInst.AssignDetails)=-1 then 'There are no boundaries so create an array.
bounds=0
redim proparray1(1)
redim proparray2(1)
Else
    bounds=ubound (objSWbemInst.AssignDetails)+1 'Increase array for new boundaries
    ReDim Preserve proparray1 (ubound (proparray1) + ubound (inputArray1))
    ReDim Preserve proparray2 (ubound (proparray2) + ubound (inputArray2))
End If    
 
for i= 0 to ubound(inputArray1)-1 'Add boundaries
    proparray1(bounds+i)=inputArray1(i)
proparray2(bounds+i)=inputArray2(i)
Next 
 
objSWbemInst.AssignDetails = proparray1
objSWbemInst.AssignTypes = proparray2
objSWbemInst.Put_ , objSWbemContext
 
objSWbemServices.ExecMethod "SMS_SiteControlFile.Filetype=0,Sitecode=""" & Sitecode & """", "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

Tasks

How to Report SMS Site Boundaries
How to Use the Site Control File