Come connettersi a un provider SMS in Configuration Manager tramite WMI
Prima di connettersi al provider SMS per un server del sito Configuration Manager locale o remoto, è prima necessario individuare il provider SMS per il server del sito. Il provider SMS può essere locale o remoto nel server del sito Configuration Manager in uso. La classe SMS_ProviderLocation
Strumentazione gestione Windows (WMI) è presente in tutti i server del sito Configuration Manager e un'istanza conterrà il percorso del server del sito Configuration Manager in uso.
È possibile connettersi al provider SMS in un server del sito Configuration Manager usando l'oggetto SWbemLocator WMI o il metodo Host GetObject
script Windows. Entrambi gli approcci funzionano ugualmente bene nelle connessioni locali o remote, con le limitazioni seguenti:
È necessario usare
SWbemLocator
se è necessario passare le credenziali utente a un computer remoto.Non è possibile usare
SWbemLocator
per passare in modo esplicito le credenziali utente a un computer locale.Esistono diverse sintassi che è possibile usare per stabilire la connessione, a seconda che la connessione sia locale o remota. Dopo aver eseguito la connessione al provider SMS, si avrà un oggetto SWbemServices usato per accedere agli oggetti Configuration Manager.
Nota
Se è necessario aggiungere qualificatori di contesto per la connessione, vedere Come aggiungere un qualificatore di contesto Configuration Manager tramite WMI.
Per connettersi a un provider SMS
Ottiene un oggetto WbemScripting.SWbemLocator .
Impostare il livello di autenticazione sulla privacy dei pacchetti.
Configurare una connessione al provider SMS usando il metodo ConnectServer dell'oggetto SWbemLocator. Specificare le credenziali solo se si tratta di un computer remoto.
Utilizzando la proprietà ProviderForLocalSitedell'oggetto SMS_ProviderLocation, connettersi al provider SMS per il computer locale e ricevere un oggetto SWbemServices.
Utilizzare l'oggetto SWbemServices per accedere agli oggetti provider. Per altre informazioni, vedere Panoramica degli oggetti.
Esempi
L'esempio seguente si connette al server. Tenta quindi di connettersi al provider SMS per il server. In genere questo sarà lo stesso computer. In caso contrario, SMS_ProviderLocation fornisce il nome del computer corretto.
Per informazioni sulla chiamata del codice di esempio, vedere Chiamata di frammenti di codice 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
L'esempio seguente si connette al server remoto tramite PowerShell e tenta una connessione 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)
Compilazione del codice
Questo esempio C# richiede:
Commenti
Il metodo di esempio ha i parametri seguenti:
Parametro | Tipo | Descrizione |
---|---|---|
connection |
-Gestito: WqlConnectionManager - VBScript: SWbemServices |
|
Connessione valida al provider SMS. | ||
taskSequence |
-Gestito: IResultObject -Vbscript: SWbemObject |
Sequenza di attività valida (SMS_TaskSequence). |
taskSequenceXML |
-Gestito: String -Vbscript: String |
Xml della sequenza di attività valida. |
Programmazione efficiente
Per altre informazioni sulla gestione degli errori, vedere Informazioni sugli errori di Configuration Manager.
Sicurezza di .NET Framework
L'uso dello script per passare il nome utente e la password è un rischio per la sicurezza e deve essere evitato laddove possibile.
Nell'esempio precedente l'autenticazione viene impostata sulla privacy dei pacchetti. Si tratta dello stesso provider SMS gestito.
Per altre informazioni sulla protezione delle applicazioni Configuration Manager, vedere Configuration Manager'amministrazione basata sui ruoli.
Vedere anche
Nozioni fondamentali sul provider SMS
Come aggiungere un qualificatore di contesto Configuration Manager tramite WMI
Strumentazione gestione Windows