SWbemLocator 物件

您可以使用 SWbemLocator 物件的 方法來取得 SWbemServices 物件,此物件代表本機電腦或遠端主機電腦上的命名空間連線。 然後,您可以使用 SWbemServices 物件的方法來存取 WMI。 此物件可由 VBScript CreateObject 呼叫建立。

成員

SWbemLocator物件具有下列類型的成員:

方法

SWbemLocator物件具有這些方法。

方法 描述
ConnectServer 連接到指定電腦上的 WMI。

屬性

SWbemLocator物件具有這些屬性。

屬性 存取類型 描述
安全_
唯讀
用來讀取或變更安全性設定。

備註

WMI 腳本程式庫物件模型的頂端是 SWbemLocator 物件。 SWbemLocator 可用來建立與 WMI 命名空間的已驗證連線,就像 VBScript GetObject 函式和 WMI Moniker 「winmgmts:」 用來建立與 WMI 的已驗證連線一樣。 不過,SWbemLocator 的設計目的是要解決兩個無法使用 GetObject 和 WMI Moniker 執行的特定腳本案例。 如果您需要下列專案,您必須使用 SWbemLocator:

  • 提供使用者和密碼認證,以連線到遠端電腦上的 WMI。 搭配 GetObject 函式使用的 WMI Moniker 不包含指定認證的機制。 大部分的 WMI 活動 (包括遠端電腦上執行的所有活動,) 都需要系統管理員許可權。 如果您通常會使用一般使用者帳戶而非系統管理員帳戶登入,除非您在替代認證下執行腳本,否則您將無法執行大部分的 WMI 工作。
  • 如果您是從網頁內執行 WMI 腳本,請連線至 WMI。 因為 Internet Explorer 不允許基於安全性考慮使用 GetObject,所以無法在 HTML 頁面中內嵌的腳本時使用 GetObject 函式。

此外,如果您發現搭配 GetObject 使用的 WMI 連接字串令人困惑或困難,您可能想要使用 SWbemLocator 來連線到 WMI。

您可以使用 CreateObject 而非 GetObject 來建立 SWbemLocator 的參考。 若要建立參考,您必須傳遞 CreateObject 函式 SWbemLocator 程式設計識別碼 (ProgID) 「WbemScripting.SWbemLocator」,如下列腳本範例中的第 2 行所示。 取得 SWbemLocator 物件的參考之後,您可以呼叫 ConnectServer 方法來連線到 WMI,並取得 SWbemServices 物件的參考。 這會在下列腳本的第 3 行上示範。

strComputer = "."
Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServices = objSWbemLocator.ConnectServer(strComputer, "root\cimv2")
Set colSWbemObjectSet = objSWbemServices.InstancesOf("Win32_Service")
For Each objSWbemObject In colSWbemObjectSet
    Wscript.Echo "Name: " & objSWbemObject.Name
Next

若要在替代認證下執行腳本,請將使用者名稱和密碼納入為傳遞至 ConnectServer 的其他參數。 例如,此腳本會在名為 kenmyer 的使用者認證下執行,並使用密碼 homerj。

strComputer = "atl-dc-01"
Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServices = objSWbemLocator.ConnectServer _
    (strComputer, "root\cimv2", "kenmyer", "homerj")
Set colSWbemObjectSet = objSWbemServices.InstancesOf("Win32_Service")
For Each objSWbemObject In colSWbemObjectSet
    Wscript.Echo "Name: " & objSWbemObject.Name
Next

您也可以使用 Domain\User Name 格式來指定使用者名稱。 例如:

" fabrikam\kenmyer"

範例

下列 PowerShell 範例會使用 SWbemLocator 連線到伺服器。

$NameSpace = 'root\ccm'
$ComputerName = 'sccm.company.com'
$WbemLocator = New-Object -ComObject "WbemScripting.SWbemLocator"
$WbemServices = $WbemLocator.ConnectServer($ComputerName, $Namespace)
$WbemClasses = $WbemServices.SubclassesOf()
$WbemClasses

規格需求

需求
最低支援的用戶端
Windows Vista
最低支援的伺服器
Windows Server 2008
標頭
Wbemdisp.h
類型程式庫
Wbemdisp.tlb
DLL
Wbemdisp.dll
CLSID
CLSID_SWbemLocator
IID
IID_ISWbemLocator

另請參閱

編寫 API 物件的腳本