使用 PowerShell 從遠端連線到 WMI
Windows PowerShell提供簡單的機制,可在遠端電腦上連線到 Windows Management Instrumentation (WMI) 。 WMI 中的遠端連線會受到 Windows 防火牆、DCOM 設定和 使用者帳戶控制 (UAC) 影響。 如需設定遠端連線的詳細資訊,請參閱從 Windows Vista 遠端連線到 WMI。
本主題中的範例是以從 遠端電腦上連線到 WMI的 VBScript 為基礎。 本主題中的所有範例都會使用 Get-WmiObject Cmdlet。 如需詳細資訊,請參閱 Get-WmiObject。
Windows PowerShell範例
建立遠端電腦的連線時,使用者可以指定連線資訊的連線資訊,例如遠端電腦名稱稱、認證,以及連線的驗證層級。 下列範例說明如何使用不同的認證集連線到遠端電腦,以及如何存取 WMI 資訊。
下列Windows PowerShell範例顯示設定模擬層級:
Get-WmiObject -Namespace "root\cimv2" -Class Win32_Process -Impersonation 3 -ComputerName Computer_B
在上述範例中,使用者會使用相同的認證連線到遠端電腦, (網域和使用者名稱) 登入。 使用者也要求使用模擬。 不同于原始 VBScript 範例,不需要 Moniker 字串,因為模擬層級是由 「Impersonation」 屬性所設定。 根據預設,模擬層級會設定為 3 (模擬) 。
此範例會列出遠端電腦上執行 之Win32_Process 類別的所有實例。
注意
您應該指定要在遠端電腦上連線到的 WMI 命名空間,因為預設命名空間在不同的電腦上可能不相同。
下列Windows PowerShell範例示範如何連線到具有不同認證的遠端電腦,並將模擬層級設定為 3,也就是 Impersonate:
$Computer = "atl-dc-01"
Get-WmiObject -Namespace "root\cimv2" -Class Win32_Process -Impersonation 3 -Credential `
FABRIKAM\administrator -ComputerName $Computer
在上述範例中,電腦名稱稱已指派給 $Computer 變數。 使用者會使用特定認證連線到遠端電腦, (網域和使用者名稱) ,並要求驗證層級的模擬。
注意
重音符號字元 (') 用來表示分行符號。 它相當於 VBScript 中的底線字元 (_) 。
下列Windows PowerShell範例會建立遠端電腦名稱稱的陣列,然後在每部電腦上顯示隨插即用裝置實例Win32_PnPEntity的名稱,以連線到相同網域中的一組遠端電腦:
$ArrComputers = "Computer1", "Computer2", "Computer3"
foreach ($Computer in $ArrComputers)
{
write-host ""
write-host "===================================="
write-host "Computer: $Computer"
write-host "===================================="
write-host "-----------------------------------"
write-host "Win32_PnPEntity instance"
write-host "-----------------------------------"
$ColItems = Get-WmiObject -Class Win32_PnPEntity -Namespace "root\cimv2" -Computer $Computer
$ColItems[0..47] | Format-List Name, Status
}
注意
若要執行上述Windows PowerShell腳本,您必須是遠端電腦上的系統管理員。 此外,與上述範例相關,請注意下列事項:
- 陣列中的電腦名稱稱必須以引號括住,因為它們是字串。
- Get-WmiObject傳回的物件會指派給$ColItems變數。
- 範圍運算子 [] 會將隨插即用裝置清單限制為 48 個實例。 如需詳細資訊,請參閱 About_Operators。
- 「|」 是管線字元。 ColItems 傳回的物件會傳送至 Format-List Cmdlet。
下列Windows PowerShell範例可讓您連線到不同網域上的遠端電腦。 此範例也會在遠端電腦上顯示 Win32_Process 實例的進程名稱。
$Computer = "FullComputerName"
$Domain = "DOMAIN"
$Credential = Get-Credential
$ColItems = Get-WmiObject -Class Win32_Process -Authority "ntlmdomain:$Domain" `
-Credential $Credential -Locale "MS_409" -Namespace "root\cimv2" -ComputerName $Computer
foreach ($ObjItem in $colItems)
{
write-host "Process Name:" $ObjItem.name
}
注意
若要執行上述Windows PowerShell腳本,您必須是遠端電腦上的系統管理員。
在上述範例中,使用者會連線到不同網域上的遠端電腦,並指定慣用的地區設定。 Get-Credential命令會要求使用者的認證,並將認證指派給 物件。 此範例也會列出電腦上執行 之 Win32_Process 類別的實例名稱。
相關主題