Mit Invoke-Command in der Powershell Die remote Steuerung von Verwaltungsaufgaben

Von Thomas Joos Lesedauer: 2 min |

Anbieter zum Thema

Mit dem Cmdlet „Invoke-Command“ können Admins über das Netzwerk Befehle auf anderen Computern ausführen. In diesem Tipp werden einige Beispiel zu dem Cmdlet gezeigt und wie die „Powershell“ mit dem Cmdlet als Werkzeug für Admins zum Einsatz kommen kann.

IT-Berater Thomas Joos stellt das Cmdlet „Invoke-Command“ vor.
IT-Berater Thomas Joos stellt das Cmdlet „Invoke-Command“ vor.
(Bild: Thomas Joos)

Das Cmdlet Invoke-Command ist ein mächtiges Werkzeug in der Toolbox eines Netzwerkadmins. Es ermöglicht die Remote-Ausführung von Skripten oder Befehlen auf anderen Computern im Netzwerk, was für das Management großer Rechenzentren unerlässlich ist. Hier sind einige Szenarien, in denen Invoke-Command hilfreich sein kann:

Beispiel 1: Remote-Dienststatus abrufen

Anstatt sich manuell auf jeden Server einzuloggen und den Status von Diensten manuell zu überprüfen, können Admins Invoke-Command verwenden:

$servers = "Server1", "Server2", "Server3"Invoke-Command -ComputerName $servers -ScriptBlock { Get-Service -Name "Spooler" }

Dieser Befehl gibt den Status des Druckwarteschlangendienstes (Spooler) auf den Servern Server1, Server2 und Server3 zurück.

Beispiel 2: Remote-Software-Installation

Ein weiteres gängiges Szenario ist die Remote-Installation von Software. Um auf mehreren Servern eine Software per MSI-Installer zu installieren, kann der folgende Befehl zum Einsatz kommen:

$servers = "Server1", "Server2", "Server3"Invoke-Command -ComputerName $servers -ScriptBlock { Start-Process "msiexec.exe" -ArgumentList "/i C:\Path\To\Software.msi /quiet" }

In diesem Fall wird "msiexec.exe" auf jedem der Server ausgeführt, um die angegebene MSI-Datei zu installieren.

Beispiel 3: Abrufen von Systeminformationen

Wenn grundlegende Systeminformationen wie Betriebssystemversion, Prozessor und Speicher von mehreren Servern gesammelt werden sollen, kann das folgende Skript zum Einsatz kommen:

$servers = "Server1", "Server2", "Server3"Invoke-Command -ComputerName $servers -ScriptBlock { $os = Get-CimInstance -ClassName Win32_OperatingSystem $cpu = Get-CimInstance -ClassName Win32_Processor $ram = Get-CimInstance -ClassName Win32_PhysicalMemory [PSCustomObject]@{ "Server" = $env:COMPUTERNAME "OSVersion" = $os.Caption "CPU" = $cpu.Name "TotalPhysicalMemory" = "{0:N2} GB" -f ($ram.Capacity / 1GB) }}

In diesem Skript wird das Cmdlet "Get-CimInstance" verwendet, um Informationen über das Betriebssystem, den Prozessor und den physischen Speicher abzurufen. Sodann ist ein benutzerdefiniertes Powershell-Objekt zu erstellen, um diese Informationen aufzunehmen, und geben dieses Objekt zurück. Mit Invoke-Command lässt sich dieses Skript auf einer Liste von Servern ausführen und so eine Übersicht über ihre Systeminformationen erhalten.

(ID:49675043)

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu RZ- und Server-Technik

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung.

Aufklappen für Details zu Ihrer Einwilligung