Remoteverbindung mit WMI mit PowerShell

Windows PowerShell bietet einen einfachen Mechanismus zum Herstellen einer Verbindung mit der Windows-Verwaltungsinstrumentation (Windows Management Instrumentation, WMI) auf einem Remotecomputer. Auf Remoteverbindungen in WMI wirken sich die Windows-Firewall, die DCOM-Einstellungen und die Benutzerkontensteuerung (UAC) aus. Weitere Informationen zum Konfigurieren von Remoteverbindungen finden Sie unter Remoteverbindungen mit WMI ab Windows Vista.

Die Beispiele in diesem Thema basieren auf den VBScripts aus dem Thema Herstellen einer Verbindung mit WMI auf einem Remotecomputer. In allen Beispielen in diesem Thema wird das Cmdlet Get-WmiObject verwendet. Weitere Informationen finden Sie unter Get-WmiObject.

Windows PowerShell-Beispiele

Beim Herstellen einer Verbindung mit einem Remotecomputer kann ein Benutzer die Verbindungsinformationen wie den Namen des Remotecomputers, die Anmeldeinformationen und die Authentifizierungsebene für die Verbindung angeben. In den folgenden Beispielen wird veranschaulicht, wie Sie mithilfe verschiedener Anmeldeinformationen eine Verbindung mit einem Remotecomputer herstellen und auf WMI-Informationen zugreifen.

Im folgenden Windows PowerShell-Beispiel wird das Festlegen der Identitätswechselebene gezeigt:


Get-WmiObject -Namespace "root\cimv2" -Class Win32_Process -Impersonation 3 -ComputerName Computer_B

Im vorherigen Beispiel stellt der Benutzer eine Verbindung mit einem Remotecomputer her, indem er dieselben Anmeldeinformationen (Domäne und Benutzername) verwendet, mit denen er sich angemeldet hat. Der Benutzer hat auch die Verwendung des Identitätswechsels angefordert. Im Gegensatz zum ursprünglichen VBScript-Beispiel ist eine Monikerzeichenfolge nicht erforderlich, da die Identitätswechselebene durch die Eigenschaft „Identitätswechsel“ festgelegt wird. Standardmäßig ist die Identitätswechselebene auf „3“ (Identitätswechsel) festgelegt.

Im Beispiel werden alle Instanzen der Win32_Process-Klasse aufgelistet, die auf dem Remotecomputer ausgeführt werden.

Hinweis

Sie sollten den WMI-Namespace angeben, mit dem eine Verbindung auf dem Remotecomputer hergestellt werden soll, da der Standardnamespace auf verschiedenen Computern möglicherweise nicht identisch ist.

 

Im folgenden Windows PowerShell-Beispiel wird gezeigt, wie Sie eine Verbindung mit einem Remotecomputer mit unterschiedlichen Anmeldeinformationen herstellen und die Identitätswechselebene auf „3“ (Identitätswechsel) festlegen:


$Computer = "atl-dc-01"

Get-WmiObject -Namespace "root\cimv2" -Class Win32_Process -Impersonation 3 -Credential `
FABRIKAM\administrator -ComputerName $Computer

Im vorherigen Beispiel wurde der Computername der Variablen „$Computer“ zugewiesen. Der Benutzer stellt mithilfe bestimmter Anmeldeinformationen (Domänen- und Benutzername) eine Verbindung mit einem Remotecomputer her und fordert einen Identitätswechsel für die Authentifizierungsebene an.

Hinweis

Das Grave-Accent-Zeichen (`) wird verwendet, um einen Zeilenumbruch anzugeben. Es entspricht dem Unterstrich (_) in VBScript.

 

Im folgenden Windows PowerShell-Beispiel wird eine Verbindung mit einer Gruppe von Remotecomputern in derselben Domäne hergestellt. Dazu wird ein Array von Remotecomputernamen erstellt, und dann werden die Namen der Plug & Play Geräte (Instanzen von Win32_PnPEntity) auf jedem Computer angezeigt:

$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
}

Hinweis

Zum Ausführen des vorherigen Windows PowerShell-Skripts müssen Sie Administrator auf den Remotecomputern sein. Beachten Sie im Zusammenhang mit dem vorherigen Beispiel Folgendes:

 

  • Die Computernamen im Array müssen in Anführungszeichen gesetzt werden, da es sich um Zeichenfolgen handelt.
  • Die vom Cmdlet Get-WmiObject zurückgegebenen Objekte werden der Variablen „$ColItems“ zugewiesen.
  • Der Bereichsoperator [] hat die Liste der Plug & Play Geräte auf 48 Instanzen eingeschränkt. Weitere Informationen finden Sie unter Informationen zu Operatoren.
  • Das Zeichen „|“ ist das Pipelinezeichen. Das von „ColItems“ zurückgegebene Objekt wird an das Cmdlet Format-List gesendet.

Im folgenden Windows PowerShell-Beispiel haben Sie die Möglichkeit, eine Verbindung mit einem Remotecomputer in einer anderen Domäne herzustellen. In diesem Beispiel werden auch die Prozessnamen für die Instanzen von Win32_Process auf dem Remotecomputer angezeigt.

$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
}

Hinweis

Zum Ausführen des vorherigen Windows PowerShell-Skripts müssen Sie Administrator auf dem Remotecomputer sein.

 

Im vorherigen Beispiel stellt der Benutzer eine Verbindung mit einem Remotecomputer in einer anderen Domäne her und gibt ein bevorzugtes Gebietsschema an. Der Befehl Get-Credential fordert die Anmeldeinformationen des Benutzers an und weist die Anmeldeinformationen einem Objekt zu. Im Beispiel werden auch die Namen von Instanzen der Win32_Process-Klasse aufgelistet, die auf dem Computer ausgeführt werden.

Herstellen einer Verbindung mit WMI auf einem Remotecomputer