如何使用 WMI 連線到 Configuration Manager 中的 SMS 提供者

在連線到本機或遠端 Configuration Manager 月臺伺服器的 SMS 提供者之前,您必須先找到站台伺服器的 SMS 提供者。 SMS 提供者可以是本機或遠端,可連至您所使用的 Configuration Manager 月臺伺服器。 Windows Management Instrumentation (WMI) 類別SMS_ProviderLocation存在於所有 Configuration Manager 月臺伺服器上,而其中一個實例會包含您所使用 Configuration Manager 月台伺服器的位置。

您可以使用 WMI SWbemLocator 物件或使用 Windows 腳本主GetObject機方法,連線到 Configuration Manager 月台伺服器上的 SMS 提供者。 這兩種方法在本機或遠端連線上同樣運作良好,具有下列限制:

  • 如果您需要將使用者認證傳遞至遠端電腦,則必須使用 SWbemLocator

  • 您無法使用 SWbemLocator 明確地將使用者認證傳遞至本機計算機。

    您可以使用數種不同的語法來進行連線,視聯機是本機還是遠端而定。 聯機到 SMS 提供者之後,您會有用來存取 Configuration Manager 物件的 SWbemServices 物件。

注意事項

如果您需要為連線新增內容限定符,請參閱如何使用WMI 新增 Configuration Manager 內容限定符

線上到SMS提供者

  1. 取得 WbemScripting.SWbemLocator 物件。

  2. 將驗證層級設定為封包隱私權。

  3. 使用 SWbemLocator 物件 ConnectServer 方法來設定與 SMS 提供者的連線。 只有在遠端電腦時才提供認證。

  4. 使用 SMS_ProviderLocation 物件 ProviderForLocalSite 屬性,連接到本機計算機的 SMS 提供者,並接收 SWbemServices 物件

  5. 使用 SWbemServices 物件來存取提供者物件。 如需詳細資訊,請參閱 物件概觀

範例

下列範例會連線到伺服器。 然後嘗試連線到該伺服器的SMS提供者。 這通常是相同的計算機。 如果不是, SMS_ProviderLocation 提供正確的計算機名稱。

如需呼叫範例程式代碼的相關信息,請參閱呼叫 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  

下列範例會使用 PowerShell 連線到遠端伺服器,並嘗試 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)

正在編譯程式碼

此 C# 範例需要:

Comments

範例方法具有下列參數:

參數 Type 描述
connection -管理: WqlConnectionManager
- VBScript: SWbemServices
SMS 提供者的有效連線。
taskSequence -管理: IResultObject
- VBScript: SWbemObject
有效的工作順序 (SMS_TaskSequence) 。
taskSequenceXML -管理: String
- VBScript: String
有效的工作順序 XML。

健全的程式設計

如需錯誤處理的詳細資訊,請參閱關於 Configuration Manager 錯誤

.NET Framework 安全性

使用腳本來傳遞使用者名稱和密碼是安全性風險,應該盡可能避免。

上述範例會將驗證設定為封包隱私權。 這是相同的受控SMS提供者。

如需保護 Configuration Manager 應用程式的詳細資訊,請參閱 Configuration Manager 角色型系統管理

另請參閱

SMS 提供者基礎
如何使用 WMI 新增 Configuration Manager 內容限定符
Windows Management Instrumentation