Freigeben über


Herstellen einer Verbindung mit einem SMS-Anbieter in Configuration Manager mithilfe von WMI

Bevor Sie eine Verbindung mit dem SMS-Anbieter für einen lokalen oder Remote-Configuration Manager Standortserver herstellen, müssen Sie zuerst den SMS-Anbieter für den Standortserver suchen. Der SMS-Anbieter kann entweder lokal oder remote zu dem Configuration Manager Standortserver sein, den Sie verwenden. Die WMI-Klasse SMS_ProviderLocation (Windows Management Instrumentation) ist auf allen Configuration Manager Standortservern vorhanden, und eine Instanz enthält den Speicherort für den Configuration Manager Standortserver, den Sie verwenden.

Sie können eine Verbindung mit dem SMS-Anbieter auf einem Configuration Manager Standortserver herstellen, indem Sie das WMI-SWbemLocator-Objekt oder die Windows Script Host-Methode GetObject verwenden. Beide Ansätze funktionieren bei lokalen oder Remoteverbindungen mit den folgenden Einschränkungen gleichermaßen gut:

  • Sie müssen verwenden SWbemLocator , wenn Sie Benutzeranmeldeinformationen an einen Remotecomputer übergeben müssen.

  • Sie können nicht verwenden SWbemLocator , um Benutzeranmeldeinformationen explizit an einen lokalen Computer zu übergeben.

    Es gibt verschiedene Syntaxen, die Sie zum Herstellen der Verbindung verwenden können, je nachdem, ob die Verbindung lokal oder remote ist. Nachdem Sie mit dem SMS-Anbieter verbunden sind, verfügen Sie über ein SWbemServices-Objekt, das Sie für den Zugriff auf Configuration Manager Objekte verwenden.

Hinweis

Wenn Sie Kontextqualifizierer für die Verbindung hinzufügen müssen, finden Sie weitere Informationen unter Hinzufügen eines Configuration Manager Kontextqualifizierers mithilfe von WMI.

So stellen Sie eine Verbindung mit einem SMS-Anbieter her

  1. Rufen Sie ein WbemScripting.SWbemLocator-Objekt ab.

  2. Legen Sie die Authentifizierungsebene auf Paketdatenschutz fest.

  3. Richten Sie mithilfe der ConnectServer-Methode des SWbemLocator-Objekts eine Verbindung mit dem SMS-Anbieter ein. Geben Sie nur Anmeldeinformationen an, wenn es sich um einen Remotecomputer handelt.

  4. Stellen Sie mithilfe der SMS_ProviderLocationProviderForLocalSite-Eigenschaft eine Verbindung mit dem SMS-Anbieter für den lokalen Computer her, und empfangen Sie ein SWbemServices-Objekt.

  5. Verwenden Sie das SWbemServices-Objekt , um auf Anbieterobjekte zuzugreifen. Weitere Informationen finden Sie unter Übersicht über Objekte.

Beispiele

Im folgenden Beispiel wird eine Verbindung mit dem Server hergestellt. Anschließend wird versucht, eine Verbindung mit dem SMS-Anbieter für diesen Server herzustellen. In der Regel ist dies derselbe Computer. Andernfalls stellt SMS_ProviderLocation den richtigen Computernamen bereit.

Informationen zum Aufrufen des Beispielcodes finden Sie unter Aufrufen von Configuration Manager Codeausschnitten.

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  

Im folgenden Beispiel wird mithilfe von PowerShell eine Verbindung mit dem Remoteserver hergestellt, und es wird versucht, eine SMS-Verbindung herzustellen.

$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)

Kompilieren des Codes

Für dieses C#-Beispiel ist Folgendes erforderlich:

Kommentare

Die Beispielmethode verfügt über die folgenden Parameter:

Parameter Typ Beschreibung
connection -Verwalteten: WqlConnectionManager
– VBScript: SWbemServices
Eine gültige Verbindung mit dem SMS-Anbieter.
taskSequence -Verwalteten: IResultObject
-Vbscript: SWbemObject
Eine gültige Tasksequenz (SMS_TaskSequence).
taskSequenceXML -Verwalteten: String
-Vbscript: String
Eine gültige Tasksequenz-XML.

Robuste Programmierung

Weitere Informationen zur Fehlerbehandlung finden Sie unter Informationen zu Configuration Manager Fehlern.

.NET Framework-Sicherheit

Die Verwendung eines Skripts zum Übergeben von Benutzername und Kennwort ist ein Sicherheitsrisiko und sollte nach Möglichkeit vermieden werden.

Im vorherigen Beispiel wird die Authentifizierung auf Paketdatenschutz festgelegt. Dies ist derselbe verwaltete SMS-Anbieter.

Weitere Informationen zum Schützen Configuration Manager Anwendungen finden Sie unter Configuration Manager rollenbasierte Verwaltung.

Siehe auch

Grundlagen des SMS-Anbieters
Hinzufügen eines Configuration Manager Kontextqualifizierers mithilfe von WMI
Windows Windows-Verwaltungsinstrumentation