Condividi tramite


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

  1. Ottiene un oggetto WbemScripting.SWbemLocator .

  2. Impostare il livello di autenticazione sulla privacy dei pacchetti.

  3. Configurare una connessione al provider SMS usando il metodo ConnectServer dell'oggetto SWbemLocator. Specificare le credenziali solo se si tratta di un computer remoto.

  4. Utilizzando la proprietà ProviderForLocalSitedell'oggetto SMS_ProviderLocation, connettersi al provider SMS per il computer locale e ricevere un oggetto SWbemServices.

  5. 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