Conexión a un proveedor de SMS en Configuration Manager mediante WMI

Antes de conectarse al proveedor de SMS para un servidor de sitio de 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 para el servidor de sitio Configuration Manager que usa. La clase SMS_ProviderLocation Instrumental de administración de Windows (WMI) está presente en todos los servidores de sitio 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 de sitio Configuration Manager mediante el objeto SWbemLocator de WMI o mediante el método Host GetObject de script de Windows. Ambos enfoques funcionan igualmente bien en conexiones locales o remotas, con las siguientes limitaciones:

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

  • No se puede usar SWbemLocator para pasar explícitamente las 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 se usará para acceder a Configuration Manager objetos.

Nota:

Si necesita agregar calificadores de contexto para la conexión, vea Cómo agregar un calificador de contexto de Configuration Manager mediante WMI.

Para conectarse a un proveedor de SMS

  1. Obtenga 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. Con la propiedad ProviderForLocalSite del objeto SMS_ProviderLocation, conéctese al proveedor de SMS para el equipo local y reciba un objeto SWbemServices.

  5. Use el objeto SWbemServices para acceder a los objetos del proveedor. Para obtener más información, vea Introducción a los 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 Llamar a fragmentos de código de 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  

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 ejemplo de C# requiere:

Comentarios

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

Parámetro Tipo Descripción
connection -Administrado: WqlConnectionManager
- VBScript: SWbemServices
Una conexión válida al proveedor de SMS.
taskSequence -Administrado: IResultObject
-Vbscript: SWbemObject
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, consulte Acerca de los errores de Configuration Manager.

Seguridad de .NET Framework

El uso de script para pasar el nombre de usuario y la contraseña supone un riesgo de seguridad y se debe evitar 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 sobre la protección de aplicaciones Configuration Manager, consulte Configuration Manager administración basada en roles.

Consulta también

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