Compartilhar via


How to Connect to an SMS Provider in Configuration Manager by Using WMI (Como Ligar a um Fornecedor de SMS no Configuration Manager através da WMI)

Antes de ligar ao Fornecedor de SMS de um servidor local ou remoto Configuration Manager site, primeiro tem de localizar o Fornecedor de SMS do servidor do site. O Fornecedor de SMS pode ser local ou remoto para o Configuration Manager servidor do site que está a utilizar. A classe SMS_ProviderLocation Windows Management Instrumentation (WMI) está presente em todos os servidores Configuration Manager site e uma instância irá conter a localização do servidor do site Configuration Manager que está a utilizar.

Pode ligar ao Fornecedor de SMS num servidor de site Configuration Manager com o objeto WMI SWbemLocator ou através do método Anfitrião GetObject de Scripts do Windows. Ambas as abordagens funcionam igualmente bem em ligações locais ou remotas, com as seguintes limitações:

  • Tem de utilizar SWbemLocator se precisar de transmitir credenciais de utilizador para um computador remoto.

  • Não pode utilizar SWbemLocator para transmitir explicitamente credenciais de utilizador para um computador local.

    Existem várias sintaxes diferentes que pode utilizar para efetuar a ligação, consoante a ligação seja local ou remota. Depois de estar ligado ao Fornecedor de SMS, terá um objeto SWbemServices que utiliza para aceder a objetos Configuration Manager.

Para ligar a um fornecedor de SMS

  1. Obtenha um objeto WbemScripting.SWbemLocator .

  2. Defina o nível de autenticação como privacidade dos pacotes.

  3. Configure uma ligação ao Fornecedor de SMS com o método ConnectServer do objeto SWbemLocator. Forneça credenciais apenas se for um computador remoto.

  4. Com a propriedade ProviderForLocalSite do objeto SMS_ProviderLocation, ligue-se ao Fornecedor de SMS do computador local e receba um objeto SWbemServices.

  5. Utilize o objeto SWbemServices para aceder aos objetos do fornecedor. Para obter mais informações, veja Descrição geral dos objetos.

Exemplos

O exemplo seguinte liga-se ao servidor. Em seguida, tenta ligar ao Fornecedor de SMS desse servidor. Normalmente, este será o mesmo computador. Se não estiver, SMS_ProviderLocation fornece o nome de computador correto.

Para obter informações sobre como chamar o código de exemplo, veja Chamar Configuration Manager Fragmentos de Código.

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

O exemplo seguinte liga-se ao servidor remoto com o PowerShell e tenta uma ligação POR 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)

Compilando o código

Este exemplo de C# requer:

Comments

O método de exemplo tem os seguintes parâmetros:

Parâmetro Tipo Descrição
connection - Gerido: WqlConnectionManager
- VBScript: SWbemServices
Uma ligação válida ao Fornecedor de SMS.
taskSequence - Gerido: IResultObject
- VBScript: SWbemObject
Uma sequência de tarefas válida (SMS_TaskSequence).
taskSequenceXML - Gerido: String
- VBScript: String
Um XML de sequência de tarefas válido.

Programação robusta

Para obter mais informações sobre o processamento de erros, veja About Configuration Manager Errors (Acerca dos Erros de Configuration Manager).

Segurança do .NET Framework

A utilização do script para transmitir o nome de utilizador e a palavra-passe é um risco de segurança e deve ser evitada sempre que possível.

O exemplo anterior define a autenticação como privacidade de pacotes. Este é o mesmo Fornecedor de SMS gerido.

Para obter mais informações sobre como proteger aplicações Configuration Manager, veja Configuration Manager administração baseada em funções.

Confira também

Noções básicas do Fornecedor de SMSComo Adicionar um Qualificador de Contexto do Configuration Manager através da WMI Windows Management Instrumentation