Cómo Conectar a un proveedor de SMS en Configuration Manager mediante WMI

Antes de conectarse al proveedor de SMS para un servidor de sitio Configuration Manager local o remoto, primero debe buscar el proveedor de SMS para el servidor de sitio. El proveedor de SMS puede ser local o remoto al Configuration Manager de sitio que está usando. La clase Windows Instrumental de administración de administración (WMI) SMS_ProviderLocation está presente en todos los servidores de sitio de Configuration Manager y una instancia contendrá la ubicación del servidor de sitio Configuration Manager que está usando.

Puede conectarse al proveedor de SMS en un servidor Configuration Manager sitio mediante el objeto WMI SWbemLocator o mediante el Windows host de scriptGetObject. Ambos enfoques funcionan igual de bien en conexiones locales o remotas, con las siguientes limitaciones:

  • Debe usar si SWbemLocator necesita pasar credenciales de usuario a un equipo remoto.

  • No puede usar para SWbemLocator pasar explícitamente credenciales de usuario a un equipo local.

    Hay varias sintaxis diferentes que puede usar para realizar la conexión, en función de si la conexión es local o remota. Después de conectarse al proveedor de SMS, tendrá un objeto SWbemServices que use para obtener acceso a Configuration Manager objetos.

Nota

Si necesita agregar calificadores de contexto para la conexión, consulte How to Add a Configuration Manager Context Qualifier by Using WMI.

Para conectarse a un proveedor de SMS

  1. Obtener un objeto WbemScripting.SWbemLocator .

  2. Establezca el nivel de autenticación en privacidad de paquetes.

  3. Configure una conexión con el proveedor de SMS mediante el método ConnectServer del objeto SWbemLocator. Proporcione credenciales solo si es un equipo remoto.

  4. Mediante la propiedad SMS_ProviderLocation objeto ProviderForLocalSite , conéctese al proveedor de SMS del equipo local y reciba un objeto SWbemServices.

  5. Use el objeto SWbemServices para obtener acceso a objetos de proveedor. Para obtener más información, vea Información general sobre objetos.

Ejemplos

En el ejemplo siguiente se conecta al servidor. A continuación, intenta conectarse al proveedor de SMS para ese servidor. Normalmente, este será el mismo equipo. Si no es así, SMS_ProviderLocation proporciona el nombre de equipo correcto.

Para obtener información sobre cómo llamar al código de ejemplo, vea Calling Configuration Manager Code Snippets.

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  

El ejemplo siguiente se conecta al servidor remoto mediante powerShell e intenta una conexión 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)

Compilar el código

Este C# ejemplo requiere:

Comentarios

El método de ejemplo tiene los siguientes parámetros:

Parámetro Tipo Descripción
connection - Administrado: WqlConnectionManager
- VBScript: SWbemServices
Una conexión válida al proveedor de SMS.
taskSequence - Administrado: IResultObject
- VBScript: SWbemObject
Una secuencia de tareas válida (SMS_TaskSequence).
taskSequenceXML - Administrado: String
- VBScript: String
Xml de secuencia de tareas válido.

Programación sólida

Para obtener más información sobre el control de errores, vea About Configuration Manager Errors.

Seguridad de .NET Framework

El uso de script para pasar el nombre de usuario y la contraseña es un riesgo de seguridad y debe evitarse siempre que sea posible.

En el ejemplo anterior se establece la autenticación en privacidad de paquetes. Este es el mismo proveedor de SMS administrado.

Para obtener más información acerca de cómo proteger Configuration Manager aplicaciones, vea Configuration Manager administración basada en roles.

Consulta también

Conceptos básicos del proveedor de SMS
Cómo agregar un calificador Configuration Manager contexto mediante WMI
Windows instrumental de administración