Dela via


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

  1. Hämta ett WbemScripting.SWbemLocator-objekt .

  2. Ange autentiseringsnivån till paketsekretess.

  3. Konfigurera en anslutning till SMS-providern med hjälp av metoden SWbemLocator-objektetConnectServer . Ange endast autentiseringsuppgifter om det är en fjärrdator.

  4. Använd egenskapen SMS_ProviderLocation-objektetProviderForLocalSite , anslut till SMS-providern för den lokala datorn och ta emot ett SWbemServices-objekt.

  5. 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