Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Antes de ligar ao Fornecedor de SMS de um servidor local ou remoto Configuration Manager site, primeiro tem de localizar o Fornecedor de SMS do servidor do site. O Fornecedor de SMS pode ser local ou remoto para o Configuration Manager servidor do site que está a utilizar. A classe SMS_ProviderLocation Windows Management Instrumentation (WMI) está presente em todos os servidores Configuration Manager site e uma instância irá conter a localização do servidor do site Configuration Manager que está a utilizar.
Pode ligar ao Fornecedor de SMS num servidor de site Configuration Manager com o objeto WMI SWbemLocator ou através do método Anfitrião GetObject de Scripts do Windows. Ambas as abordagens funcionam igualmente bem em ligações locais ou remotas, com as seguintes limitações:
Tem de utilizar
SWbemLocatorse precisar de transmitir credenciais de utilizador para um computador remoto.Não pode utilizar
SWbemLocatorpara transmitir explicitamente credenciais de utilizador para um computador local.Existem várias sintaxes diferentes que pode utilizar para efetuar a ligação, consoante a ligação seja local ou remota. Depois de estar ligado ao Fornecedor de SMS, terá um objeto SWbemServices que utiliza para aceder a objetos Configuration Manager.
Observação
Se precisar de adicionar qualificadores de contexto para a ligação, veja How to Add a Configuration Manager Context Qualifier by Using WMI (Como Adicionar um Qualificador de Contexto do Configuration Manager através da WMI).
Para ligar a um fornecedor de SMS
Obtenha um objeto WbemScripting.SWbemLocator .
Defina o nível de autenticação como privacidade dos pacotes.
Configure uma ligação ao Fornecedor de SMS com o método ConnectServer do objeto SWbemLocator. Forneça credenciais apenas se for um computador remoto.
Com a propriedade ProviderForLocalSite do objeto SMS_ProviderLocation, ligue-se ao Fornecedor de SMS do computador local e receba um objeto SWbemServices.
Utilize o objeto SWbemServices para aceder aos objetos do fornecedor. Para obter mais informações, veja Descrição geral dos objetos.
Exemplos
O exemplo seguinte liga-se ao servidor. Em seguida, tenta ligar ao Fornecedor de SMS desse servidor. Normalmente, este será o mesmo computador. Se não estiver, SMS_ProviderLocation fornece o nome de computador correto.
Para obter informações sobre como chamar o código de exemplo, veja Chamar Configuration Manager Fragmentos 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 seguinte liga-se ao servidor remoto com o PowerShell e tenta uma ligação POR 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 |
- 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 |
Um XML de sequência de tarefas válido. |
Programação robusta
Para obter mais informações sobre o processamento de erros, veja About Configuration Manager Errors (Acerca dos Erros de Configuration Manager).
Segurança do .NET Framework
A utilização do script para transmitir 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 como privacidade de pacotes. Este é o mesmo Fornecedor de SMS gerido.
Para obter mais informações sobre como proteger aplicações Configuration Manager, veja Configuration Manager administração baseada em funções.
Confira também
Noções básicas do Fornecedor de SMSComo Adicionar um Qualificador de Contexto do Configuration Manager através da WMI Windows Management Instrumentation