Compartilhar via


Como se conectar a um provedor de SMS no Configuration Manager usando o WMI

Antes de se conectar ao Provedor de SMS para um servidor de site de Configuration Manager local ou remoto, primeiro você precisa localizar o Provedor de SMS para o servidor do site. O Provedor de SMS pode ser local ou remoto para o servidor de site Configuration Manager que você está usando. A classe SMS_ProviderLocation WMI (Instrumentação de Gerenciamento do Windows) está presente em todos os servidores de site Configuration Manager e uma instância conterá o local do Configuration Manager servidor de site que você está usando.

Você pode se conectar ao Provedor de SMS em um servidor de site Configuration Manager usando o objeto WMI SWbemLocator ou usando o método Host GetObject de Script do Windows. Ambas as abordagens funcionam igualmente bem em conexões locais ou remotas, com as seguintes limitações:

  • Você deve usar SWbemLocator se precisar passar credenciais de usuário para um computador remoto.

  • Você não pode usar SWbemLocator para passar explicitamente as credenciais do usuário para um computador local.

    Há várias sintaxes diferentes que você pode usar para fazer a conexão, dependendo se a conexão é local ou remota. Depois de estar conectado ao Provedor de SMS, você terá um objeto SWbemServices que você usará para acessar Configuration Manager objetos.

Observação

Se você precisar adicionar qualificadores de contexto para a conexão, consulte Como adicionar um qualificador de contexto de Configuration Manager usando o WMI.

Para se conectar a um provedor de SMS

  1. Obtenha um objeto WbemScripting.SWbemLocator .

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

  3. Configure uma conexão com o Provedor de SMS usando o método ConnectServer do objeto SWbemLocator. Forneça credenciais somente se for um computador remoto.

  4. Usando o objeto SMS_ProviderLocation propriedade ProviderForLocalSite , conecte-se ao Provedor de SMS para o computador local e receba um objeto SWbemServices.

  5. Use o objeto SWbemServices para acessar objetos do provedor. Para obter mais informações, consulte Visão geral de objetos.

Exemplos

O exemplo a seguir se conecta ao servidor. Em seguida, ele tenta se conectar ao Provedor de SMS para esse servidor. Normalmente, este será o mesmo computador. Se não for, SMS_ProviderLocation fornecerá o nome correto do computador.

Para obter informações sobre como chamar o código de exemplo, consulte Chamando Configuration Manager Snippets 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 a seguir se conecta ao servidor remoto usando o powerShell e tenta uma conexão 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 -Gerenciado: WqlConnectionManager
- VBScript: SWbemServices
Uma conexão válida com o provedor de SMS.
taskSequence -Gerenciado: IResultObject
-Vbscript: SWbemObject
Uma sequência de tarefas válida (SMS_TaskSequence).
taskSequenceXML -Gerenciado: String
-Vbscript: String
Uma XML de sequência de tarefas válida.

Programação robusta

Para obter mais informações sobre o tratamento de erros, consulte Sobre erros de Configuration Manager.

Segurança do .NET Framework

Usar script para passar o nome de usuário e a senha é um risco de segurança e deve ser evitado sempre que possível.

O exemplo anterior define a autenticação como privacidade de pacotes. Esse é o mesmo provedor de SMS gerenciado.

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

Confira também

Fundamentos do Provedor de SMS
Como adicionar um qualificador de contexto de Configuration Manager usando o WMI
Instrumentação de gerenciamento do Windows