Ansluta till en SMS-provider i Configuration Manager med hjälp av WMI
Innan du ansluter till SMS-providern för en lokal eller fjärransluten Configuration Manager platsserver måste du först hitta SMS-providern för platsservern. SMS-providern kan vara antingen lokal eller fjärransluten till Configuration Manager platsserver som du använder. Klassen SMS_ProviderLocation
WMI (Windows Management Instrumentation) finns på alla Configuration Manager platsservrar och en instans innehåller platsen för den Configuration Manager platsserver som du använder.
Du kan ansluta till SMS-providern på en Configuration Manager platsserver med hjälp av WMI SWbemLocator-objektet eller med hjälp av metoden Windows Script HostGetObject
. Båda metoderna fungerar lika bra på lokala anslutningar eller fjärranslutningar, med följande begränsningar:
Du måste använda
SWbemLocator
om du behöver skicka användarautentiseringsuppgifter till en fjärrdator.Du kan inte använda
SWbemLocator
för att uttryckligen skicka användarautentiseringsuppgifter till en lokal dator.Det finns flera olika syntaxer som du kan använda för att upprätta anslutningen, beroende på om anslutningen är lokal eller fjärransluten. När du är ansluten till SMS-providern har du ett SWbemServices-objekt som du använder för att komma åt Configuration Manager objekt.
Obs!
Om du behöver lägga till kontextkvalificerare för anslutningen kan du läsa Så här lägger du till en Configuration Manager kontextkvalificerare med hjälp av WMI.
Så här ansluter du till en SMS-provider
Hämta ett WbemScripting.SWbemLocator-objekt .
Ange autentiseringsnivån till paketsekretess.
Konfigurera en anslutning till SMS-providern med hjälp av metoden SWbemLocator-objektetConnectServer . Ange endast autentiseringsuppgifter om det är en fjärrdator.
Använd egenskapen SMS_ProviderLocation-objektetProviderForLocalSite , anslut till SMS-providern för den lokala datorn och ta emot ett SWbemServices-objekt.
Använd SWbemServices-objektet för att komma åt providerobjekt. Mer information finns i Översikt över objekt.
Exempel
Följande exempel ansluter till servern. Den försöker sedan ansluta till SMS-providern för den servern. Detta är vanligtvis samma dator. Om det inte är det anger SMS_ProviderLocation rätt datornamn.
Information om hur du anropar exempelkoden finns i Anropa Configuration Manager kodfragment.
Function Connect(server, userName, userPassword)
On Error Resume Next
Dim net
Dim localConnection
Dim swbemLocator
Dim swbemServices
Dim providerLoc
Dim location
Set swbemLocator = CreateObject("WbemScripting.SWbemLocator")
swbemLocator.Security_.AuthenticationLevel = 6 'Packet Privacy.
' If the server is local, do not supply credentials.
Set net = CreateObject("WScript.NetWork")
If UCase(net.ComputerName) = UCase(server) Then
localConnection = true
userName = ""
userPassword = ""
server = "."
End If
' Connect to the server.
Set swbemServices= swbemLocator.ConnectServer _
(server, "root\sms",userName,userPassword)
If Err.Number<>0 Then
Wscript.Echo "Couldn't connect: " + Err.Description
Connect = null
Exit Function
End If
' Determine where the provider is and connect.
Set providerLoc = swbemServices.InstancesOf("SMS_ProviderLocation")
For Each location In providerLoc
If location.ProviderForLocalSite = True Then
Set swbemServices = swbemLocator.ConnectServer _
(location.Machine, "root\sms\site_" + _
location.SiteCode,userName,userPassword)
If Err.Number<>0 Then
Wscript.Echo "Couldn't connect:" + Err.Description
Connect = Null
Exit Function
End If
Set Connect = swbemServices
Exit Function
End If
Next
Set Connect = null ' Failed to connect.
End Function
Följande exempel ansluter till fjärrservern med PowerShell och försöker ansluta via SMS.
$siteCode = ''
$siteServer = 'server.domain'
$credentials = Get-Credential
$username = $credentials.UserName
# The connector does not understand a PSCredential. The following command will pull your PSCredential password into a string.
$password = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto([System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($credentials.Password))
$NameSpace = "root\sms\site_$siteCode"
$SWbemLocator = New-Object -ComObject "WbemScripting.SWbemLocator"
$SWbemLocator.Security_.AuthenticationLevel = 6
$connection = $SWbemLocator.ConnectServer($siteServer,$Namespace,$username,$password)
Kompilera koden
Det här C#-exemplet kräver:
Kommentarer
Exempelmetoden har följande parametrar:
Parameter | Typ | Beskrivning |
---|---|---|
connection |
-Hanterade: WqlConnectionManager – VBScript: SWbemServices |
|
En giltig anslutning till SMS-providern. | ||
taskSequence |
-Hanterade: IResultObject -Vbscript: SWbemObject |
En giltig aktivitetssekvens (SMS_TaskSequence). |
taskSequenceXML |
-Hanterade: String -Vbscript: String |
En giltig XML för aktivitetssekvens. |
Robust programmering
Mer information om felhantering finns i Om Configuration Manager fel.
.NET Framework Säkerhet
Att använda skript för att skicka användarnamn och lösenord är en säkerhetsrisk och bör undvikas där det är möjligt.
I föregående exempel anges autentiseringen till paketsekretess. Det här är samma hanterade SMS-provider.
Mer information om hur du skyddar Configuration Manager program finns i Configuration Manager rollbaserad administration.
Se även
Grunderna i SMS-providern
Så här lägger du till en Configuration Manager kontextkvalificerare med hjälp av WMI
Windows Management Instrumentation