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
Obtener un objeto WbemScripting.SWbemLocator .
Establezca el nivel de autenticación en privacidad de paquetes.
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.
Mediante la propiedad SMS_ProviderLocation objeto ProviderForLocalSite , conéctese al proveedor de SMS del equipo local y reciba un objeto SWbemServices.
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