Delen via


Verbinding maken met een SMS-provider in Configuration Manager met behulp van WMI

Voordat u verbinding maakt met de SMS-provider voor een lokale of externe Configuration Manager siteserver, moet u eerst de SMS-provider voor de siteserver zoeken. De SMS-provider kan lokaal of extern zijn naar de Configuration Manager siteserver die u gebruikt. De WMI-klasse SMS_ProviderLocation (Windows Management Instrumentation) is aanwezig op alle Configuration Manager siteservers en één exemplaar bevat de locatie voor de Configuration Manager siteserver die u gebruikt.

U kunt verbinding maken met de SMS-provider op een Configuration Manager siteserver met behulp van het WMI SWbemLocator-object of met behulp van de Methode Windows Script HostGetObject. Beide benaderingen werken even goed voor lokale of externe verbindingen, met de volgende beperkingen:

  • U moet gebruiken SWbemLocator als u gebruikersreferenties wilt doorgeven aan een externe computer.

  • U kunt niet gebruiken SWbemLocator om gebruikersreferenties expliciet door te geven aan een lokale computer.

    Er zijn verschillende syntaxisen die u kunt gebruiken om de verbinding te maken, afhankelijk van of de verbinding lokaal of extern is. Nadat u bent verbonden met de SMS-provider, hebt u een SWbemServices-object dat u gebruikt om toegang te krijgen tot Configuration Manager objecten.

Verbinding maken met een sms-provider

  1. Haal een WbemScripting.SWbemLocator-object op.

  2. Stel het verificatieniveau in op pakketprivacy.

  3. Stel een verbinding met de SMS-provider in met behulp van de methode SWbemLocator-objectConnectServer . Geef alleen referenties op als het een externe computer is.

  4. Maak met behulp van de eigenschap SMS_ProviderLocation object ProviderForLocalSite verbinding met de SMS-provider voor de lokale computer en ontvang een SWbemServices-object.

  5. Gebruik het SWbemServices-object om toegang te krijgen tot providerobjecten. Zie Overzicht van objecten voor meer informatie.

Voorbeelden

In het volgende voorbeeld wordt verbinding gemaakt met de server. Vervolgens wordt geprobeerd verbinding te maken met de SMS-provider voor die server. Meestal is dit dezelfde computer. Als dat niet zo is, geeft SMS_ProviderLocation de juiste computernaam op.

Zie Aanroepen Configuration Manager codefragmenten voor meer informatie over het aanroepen van de voorbeeldcode.

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  

Het volgende voorbeeld maakt verbinding met de externe server via PowerShell en probeert een sms-verbinding te maken.

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

De code compileren

Voor dit C#-voorbeeld is het volgende vereist:

Opmerkingen

De voorbeeldmethode heeft de volgende parameters:

Parameter Type Omschrijving
connection -Beheerd: WqlConnectionManager
- VBScript: SWbemServices
Een geldige verbinding met de SMS-provider.
taskSequence -Beheerd: IResultObject
-Vbscript: SWbemObject
Een geldige takenreeks (SMS_TaskSequence).
taskSequenceXML -Beheerd: String
-Vbscript: String
Een geldige takenreeks-XML.

Robuust programmeren

Zie Over Configuration Manager fouten voor meer informatie over foutafhandeling.

.NET Framework Beveiliging

Het gebruik van een script om de gebruikersnaam en het wachtwoord door te geven is een beveiligingsrisico en moet waar mogelijk worden vermeden.

In het voorgaande voorbeeld wordt de verificatie ingesteld op pakketprivacy. Dit is dezelfde beheerde SMS-provider.

Zie Configuration Manager op rollen gebaseerd beheer voor meer informatie over het beveiligen van Configuration Manager toepassingen.

Zie ook

Basisprincipes van SMS-provider
Een Configuration Manager contextkwalificatie toevoegen met behulp van WMI
Windows Management Instrumentation