Como Ligar a um Fornecedor de SMS no Configuration Manager ao Utilizar a WMI
Antes de ligar ao Fornecedor DE SMS para um servidor de site local ou remoto do Gestor de Configuração, primeiro tem de localizar o Fornecedor DE SMS para o servidor do site. O Fornecedor de SMS pode ser local ou remoto para o servidor do site do Gestor de Configuração que está a utilizar. A classe Windows Management Instrumentation (WMI) SMS_ProviderLocation
está presente em todos os servidores do site do Gestor de Configuração, e uma instância conterá a localização do servidor do site do Gestor de Configuração que está a usar.
Pode ligar-se ao Fornecedor DE SMS num servidor de site do Gestor de Configuração utilizando o objeto WMI SWbemLocator ou utilizando o método Windows script GetObject
Host. Ambas as abordagens funcionam igualmente bem nas ligações locais ou remotas, com as seguintes limitações:
Tem de utilizar
SWbemLocator
se precisar de passar as credenciais do utilizador para um computador remoto.Não é possível utilizar
SWbemLocator
para passar explicitamente as credenciais dos utilizadores para um computador local.Existem várias sintaxes diferentes que pode usar para fazer a ligação, dependendo se a ligação é local ou remota. Depois de estar ligado ao Fornecedor DE SMS, terá um objeto SWbemServices que utiliza para aceder a objetos do Gestor de Configuração.
Nota
Se precisar de adicionar qualificações de contexto para a ligação, consulte como adicionar uma classificativa de contexto do gestor de configuração utilizando o WMI.
Para ligar a um fornecedor de SMS
Obtenha um objeto WbemScripting.SWbemLocator.
Desa estaladiço o nível de autenticação para a privacidade do pacote.
Configurar uma ligação ao Fornecedor SMS utilizando o método ConnectServer do objeto SWbemLocator. Fornecer credenciais apenas se for um computador remoto.
Utilizando a propriedade SMS_ProviderLocation object ProviderForLocalSite, ligue-se ao Fornecedor de SMS para o computador local e receba um objeto SWbemServices.
Utilize o objeto SWbemServices para aceder a objetos do fornecedor. Para obter mais informações, consulte a visão geral dos Objetos.
Exemplos
Os exemplos a seguir ligam-se ao servidor. Em seguida, tenta ligar-se ao Fornecedor DE SMS para esse servidor. Normalmente este será o mesmo computador. Se não for, SMS_ProviderLocation fornece o nome de computador correto.
Para obter informações sobre a chamada do código de amostra, consulte o Código de Identificação do Gestor de Chamadas.
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
A amostra que se segue liga-se ao servidor remoto utilizando o powerShell e tenta uma ligaçã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)
A Compilar o Código
Este exemplo C# requer:
Comentários
O método da amostra tem os seguintes parâmetros:
Parâmetro | Tipo | Description |
---|---|---|
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 |
Uma sequência de tarefas válida XML. |
Programação Robusta
Para obter mais informações sobre o tratamento de erros, consulte Sobre erros do Gestor de Configuração.
Segurança do .NET Framework
A utilização do script para passar 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 para a privacidade do pacote. Este é o mesmo Fornecedor de SMS gerido.
Para obter mais informações sobre a segurança das aplicações do Gestor de Configuração, consulte a administração baseada em funções do Gestor de Configuração.
Consulte também
Fundamentos do fornecedor de SMS
Como adicionar uma qualificação de contexto do gestor de configuração usando o WMI
Windows Management Instrumentation