Jak nawiązać połączenie z dostawcą programu SMS w Configuration Manager przy użyciu usługi WMI

Przed nawiązaniem połączenia z dostawcą programu SMS dla lokalnego lub zdalnego serwera Configuration Manager lokacji należy najpierw zlokalizować dostawcę programu SMS dla serwera lokacji. Dostawca programu SMS może być lokalny lub zdalny na serwerze lokacji Configuration Manager, z której korzystasz. Klasa SMS_ProviderLocation Instrumentacja zarządzania windows (WMI) jest obecna na wszystkich serwerach Configuration Manager lokacji, a jedno wystąpienie będzie zawierać lokalizację używanego serwera lokacji Configuration Manager.

Możesz nawiązać połączenie z dostawcą programu SMS na serwerze lokacji Configuration Manager przy użyciu obiektu SWbemLocator usługi WMI lub metody Host GetObject skryptu systemu Windows. Oba podejścia działają równie dobrze w przypadku połączeń lokalnych lub zdalnych z następującymi ograniczeniami:

  • Należy użyć, SWbemLocator jeśli musisz przekazać poświadczenia użytkownika do komputera zdalnego.

  • Nie można używać do SWbemLocator jawnego przekazywania poświadczeń użytkownika do komputera lokalnego.

    Istnieje kilka różnych składni, których można użyć do nawiązania połączenia, w zależności od tego, czy połączenie jest lokalne, czy zdalne. Po nawiązaniu połączenia z dostawcą programu SMS będziesz mieć obiekt SWbemServices używany do uzyskiwania dostępu do obiektów Configuration Manager.

Aby nawiązać połączenie z dostawcą programu SMS

  1. Pobierz obiekt WbemScripting.SWbemLocator .

  2. Ustaw poziom uwierzytelniania na prywatność pakietów.

  3. Skonfiguruj połączenie z dostawcą programu SMS przy użyciu metody ConnectServer obiektu SWbemLocator. Podaj poświadczenia tylko wtedy, gdy jest to komputer zdalny.

  4. Za pomocą SMS_ProviderLocation właściwośćProviderForLocalSite połącz się z dostawcą programu SMS dla komputera lokalnego i odbierz obiekt SWbemServices.

  5. Użyj obiektu SWbemServices , aby uzyskać dostęp do obiektów dostawcy. Aby uzyskać więcej informacji, zobacz Omówienie obiektów.

Przykłady

Poniższy przykład łączy się z serwerem. Następnie próbuje nawiązać połączenie z dostawcą programu SMS dla tego serwera. Zazwyczaj będzie to ten sam komputer. Jeśli tak nie jest, SMS_ProviderLocation podaje poprawną nazwę komputera.

Aby uzyskać informacje na temat wywoływania przykładowego kodu, zobacz Wywoływanie fragmentów kodu Configuration Manager.

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  

Poniższy przykład nawiązuje połączenie z serwerem zdalnym przy użyciu programu PowerShell i próbuje nawiązać połączenie 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)

Kompilowanie kodu

Ten przykład języka C# wymaga:

Komentarze

Przykładowa metoda ma następujące parametry:

Parametr Wpisać Opis
connection -Zarządzane: WqlConnectionManager
- VBScript: SWbemServices
Prawidłowe połączenie z dostawcą programu SMS.
taskSequence -Zarządzane: IResultObject
-Vbscript: SWbemObject
Prawidłowa sekwencja zadań (SMS_TaskSequence).
taskSequenceXML -Zarządzane: String
-Vbscript: String
Prawidłowy kod XML sekwencji zadań.

Niezawodne programowanie

Aby uzyskać więcej informacji na temat obsługi błędów, zobacz Informacje o błędach Configuration Manager.

zabezpieczenia .NET Framework

Użycie skryptu do przekazania nazwy użytkownika i hasła stanowi zagrożenie dla bezpieczeństwa i należy unikać go tam, gdzie to możliwe.

Powyższy przykład ustawia uwierzytelnianie na prywatność pakietów. Jest to ten sam zarządzany dostawca programu SMS.

Aby uzyskać więcej informacji na temat zabezpieczania aplikacji Configuration Manager, zobacz Configuration Manager administracja oparta na rolach.

Zobacz też

Podstawy dostawcy programu SMS
Jak dodać kwalifikator kontekstu Configuration Manager przy użyciu usługi WMI
Instrumentacja zarządzania systemem Windows