Udostępnij za pośrednictwem


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 SMSJak dodać kwalifikator kontekstu Configuration Manager przy użyciuinstrumentacji zarządzania windows w usłudze WMI