# Einführung in PowerShell – Rüstzeug für Systemadministratoren

Die Bedeutung von Systemadministratoren in Unternehmen darf man keinesfalls unterschätzen: Denn nur mit einer zuverlässigen und durchgängig funktionierenden IT-Infrastruktur kann eine Firma das Maximum ihrer wirtschaftlichen Leistungsfähigkeit erreichen. Dies erfordert, je nach Größe der jeweiligen Organisation, die **Überwachung und Kontrolle von Dutzenden, wenn nicht sogar Hunderten von Rechnern gleichzeitig**. Eine Mammutaufgabe, die nur geschultes Fachpersonal mit einem tiefen Einblick in systeminterne Zusammenhänge bewältigen kann.

Tritt nun bei mehreren Rechnern gleichzeitig ein Problem auf oder muss eine neue Sicherheitslösung schnellstmöglich auf das gesamte Netzwerk geladen werden, wäre es für einen Administrator weder zeiteffizient noch wirtschaftlich, jedes Gerät einzeln aufzusuchen und immer dieselben Handgriffe zu wiederholen. Die **Windows PowerShell** ermöglicht es, solche **Prozesse immens zu beschleunigen und Routineaufgaben weitestgehend zu automatisieren**. Dadurch wird die Arbeit des Systemadministrators deutlich vereinfacht. Was die Software noch alles kann, erfahren Sie ebenfalls in unserem Artikel.

[![Bild: Windows-PowerShell-Fenster](https://www.ionos.at/digitalguide/fileadmin/_processed_/b/5/csm_windows-powershell_a32ab83ac1.webp "Windows-PowerShell-Fenster")](https://www.ionos.at/digitalguide/fileadmin/DigitalGuide/Screenshots_2018/windows-powershell.png) Windows-PowerShell sieht der Eingabeaufforderung auf den ersten Blick sehr ähnlich, weist aber grundlegende Unterschiede auf.       ##  Was ist Windows PowerShell?

Windows PowerShell ist, wie der Name schon sagt, eine sogenannte **„Shell“**. In der Informationstechnik versteht man darunter eine **Schnittstelle zwischen einem Computer und seinem Benutzer**. Der englische Begriff „Shell“ bedeutet „Muschelschale“, wird im übertragenden Sinne aber zur Bezeichnung einer äußeren Hülle verwendet. So auch in der Informatik: Dort bezeichnet man mit dem Begriff die **sichtbare Benutzer-Oberfläche**, über die man mit den systeminternen Funktionen eines Computers interagieren kann.

Shells sind **in der Regel kommandoorientiert und werden deshalb ausschließlich per Tastatur und Texteingaben gesteuert**. Sie bilden damit eine Alternative zu grafischen Benutzeroberflächen (*graphical user interfaces,* kurz: GUI), auf denen man vorrangig mit der Maus navigiert – wie beispielsweise dem Windows-Explorer. Da Shells darüber hinaus Zugang zu deutlich mehr und tieferliegenden Funktionen und Komponenten eines PCs gewähren, werden sie von vielen IT-Profis und Systemadministratoren bevorzugt.

## Warum gibt es Windows PowerShell?

Bis vor kurzem waren bei [DOS](https://www.ionos.at/digitalguide/server/knowhow/dos-was-ist-ein-disk-operating-system/ "DOS – Was ist ein Disk Operating System?")- beziehungsweise Windows-Betriebssystemen die **Kommandozeile command.com und die Eingabeaufforderung cmd.exe** die standardmäßig genutzten Shells. Mit ihnen können fortgeschrittene Computernutzer Konsolenanwendungen öffnen, Problembehebungen durchführen oder in den Laufwerken eines PCs navigieren. Über den Befehl [netstat](https://www.ionos.at/digitalguide/server/tools/einfuehrung-in-netstat/ "Einführung in netstat") ist es zum Beispiel möglich, grundlegende Daten über sämtliche Netzwerkaktivitäten zu erhalten. Jedoch fielen command.com und cmd.exe schon immer durch zwei Probleme auf: **Nicht alle Systemkomponenten sind über sie erreichbar** und ihre **Skriptsprachen gelten hinsichtlich ihrer Funktionalität als eingeschränkt**. Somit galten sie schon seit geraumer Zeit als nicht so ausgereift wie die gängigen Linux- und Unix-Shells.

Bei den Entwicklern von Microsoft bestand daher schon seit den 90er-Jahren der Plan, diese Beschränkungen abzubauen. Im Laufe der Zeit entwickelten sie verschiedene Shells, mit denen dieses Vorhaben mal mehr, mal weniger gut gelang. Als besonders wegweisend entpuppte sich letztendlich **Monad**, das 2003 erstmals vorgestellt und drei Jahre später in **PowerShell** umbenannt wurde.

Durch Microsofts „Common Engineering Criteria“, laut denen seit 2009 alle Server-Produkte des Unternehmens die PowerShell unterstützen müssen, ist selbige **zur zentralen Verwaltungs- und Automatisierungslösung in Windows avanciert**. Ab Windows 2008 wurde sie optional, bei späteren Versionen dann standardmäßig mit dem Betriebssystem ausgeliefert und ist als **Open-Source-Framework** auch für frühere Windows-Versionen als Download verfügbar.

[![Bild: Windows PowerShell in den Suchergebnissen des Windows Explorers](https://www.ionos.at/digitalguide/fileadmin/_processed_/e/d/csm_windows-powershell2_8f36484730.webp "Windows PowerShell in den Suchergebnissen des Windows Explorers")](https://www.ionos.at/digitalguide/fileadmin/DigitalGuide/Screenshots_2018/windows-powershell2.png) Windows PowerShell ist auf allen Windows-Versionen ab 2008 standardmäßig vorinstalliert.       Im Jahr 2016 folgte dann der Entschluss, die Shell **plattformunabhängig** anzubieten. Microsofts Intention dahinter: PowerShell soll künftig auch abseits von Windows, also auf Linux und macOS, zum **Universalwerkzeug für Systemadministratoren** werden. Seitdem verbreitet sich die Shell immer stärker und findet stetig neue Anhänger. Zusammengefasst kann man also sagen, dass PowerShell den lange überfälligen Nachfolger der Eingabeaufforderung darstellt.

## Was unterscheidet PowerShell von der Eingabeaufforderung?

Aber was genau hebt das neue Microsoft-Framework nun von der altbekannten Eingabeaufforderung ab? Um es einfach zu sagen: **PowerShell hat alle Funktionen von cmd.exe, kann vieles davon sogar deutlich besser und erfüllt darüber hinaus weitere Aufgaben, die unter Windows bislang nicht denkbar waren.**

PowerShell bietet prinzipiell **dieselbe Bandbreite an Befehlen wie cmd.exe**. Im Grunde lässt sich PowerShell mit ausreichenden Kenntnissen über die gängigen Standardbefehle also genauso verwenden wie die Eingabeaufforderung. Jedoch erlaubt sie darüber hinaus auch den Zugriff auf tiefergehende Windows-Interna, die mit cmd.exe bisher nicht ansteuerbar waren, zum Beispiel die **Registry** und die **Windows Management Instrumentation (WMI)**. Die Kommandozeile von Windows PowerShell folgt darüber hinaus der klaren **Logik einer konsistenten Befehlsstruktur und Syntax** und ist in dieser Hinsicht sinnvoller aufgebaut als cmd.exe.

Ein weiteres Merkmal, das die Windows PowerShell besonders auszeichnet: Das Programm arbeitet im Gegensatz zur Eingabeaufforderung und zu Unix-ähnlichen Systemen **vollständig objektbasiert**, statt Ergebnisse von Befehlen nur in Textform (strings) auszugeben. Jedes Objekt verfügt sowohl über **Eigenschaften (properties)** als auch **Methoden (methods)**, die vorgeben, wie es sich nutzen lässt. So repräsentiert beispielsweise das Windows-Prozessobjekt Eigenschaften wie Prozess-Namen und -IDs sowie Methoden zum Pausieren und Beenden von Prozessen.

Da die Ergebnisse von Befehlen grundsätzlich als .NET-Objekte ausgegeben werden, ist **es in PowerShell per Pipelining möglich, deutlich komplexere Aufgaben zu erfüllen als mit cmd.exe**. Das funktioniert, indem der Output eines Objekts in der Pipe als Input für das nächste Objekt genutzt wird. So kann man zum Beispiel große und komplexe Datenmengen nach Dateierweiterungen filtern und als übersichtliche Liste formatieren.

Windows PowerShell ist zudem nicht nur einfach eine Kommandozeile, sondern fungiert auch als **umfangreiche und leistungsstarke Scripting-Umgebung**. In dieser kann man sowohl eigene Befehle schreiben als auch mehrere Befehle zu komplexen Skripten zusammenfassen, durch die Systemmanagement-Aufgaben erleichtert werden. Per **Remoting** ist es außerdem möglich, Skripte ortsunabhängig auf beliebig vielen Systemen gleichzeitig laufen zu lassen und diese dadurch zu verwalten, einzurichten, zu erfassen und zu reparieren.

Diese Vielfalt an Möglichkeiten und Funktionen offenbart auch, was die vorrangige Zielgruppe von Windows PowerShell ist: **IT-Profis und Systemadministratoren**, die über fundierte Kenntnisse im Umgang mit Shells verfügen und bereit sind, sich zugunsten der deutlich höheren Effizienz in die Windows PowerShell einzuarbeiten. Für Nutzer, die hauptsächlich mit der grafischen Benutzeroberfläche von Windows arbeiten und nur sporadisch auf die Eingabeaufforderung zurückgreifen, bietet PowerShell hingegen keinen besonderen Mehrwert, zumal der Zeitaufwand für die Einarbeitung recht hoch ist.

Im Folgenden fassen wir die **Vor- und Nachteile von Windows PowerShell** gegenüber der Eingabeaufforderung noch einmal übersichtlich zusammen:

<table>
  <thead>
    <tr>
      <th>Was spricht für PowerShell?</th>
      <th>Was spricht gegen PowerShell?</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Sämtliche Befehle aus der Eingabeaufforderung verfügbar</td>
      <td>Komplex und hohe Lernkurve</td>
    </tr>
    <tr>
      <td>Zugriff auf tieferliegende Windows-Interna wie die Registry und WMI</td>
      <td>Richtet sich vorrangig an IT-Profis und Systemadministratoren</td>
    </tr>
    <tr>
      <td>Effizientere Bedienung dank konsistenter Befehlsstruktur und Syntax</td>
      <td>Kein gesteigerter Nutzen für GUI-Verwender, die nur selten auf die Eingabeaufforderung zurückgreifen</td>
    </tr>
    <tr>
      <td>Vollständige Objektorientierung erlaubt die Ausführung komplexerer Aufgaben durch Pipelining</td>
      <td>Umgewöhnung vonnöten</td>
    </tr>
    <tr>
      <td>Umfangreiche Scripting-Umgebung ermöglicht effiziente Automatisierung von Prozessen</td>
      <td></td>
    </tr>
    <tr>
      <td>Ortsunabhängige Administration multipler Systeme per Remoting</td>
      <td></td>
    </tr>
  </tbody>
</table>

## Wie funktioniert Windows PowerShell?

PowerShell besteht im Grunde aus zwei Bestandteilen, nämlich der **PowerShell Engine** und der **PowerShell Scripting Language**. Beide lassen sich separat voneinander oder auch in Kombination miteinander nutzen, um das Maximum an Funktionalität aus dem Programm herauszuholen.

### Die PowerShell-Engine

Über den **Kommandozeileninterpreter** (Englisch: *command-line interpreter,* kurz: CLI) von PowerShell erhält der Benutzer **via Tastatureingaben Zugang zu betriebssysteminternen Funktionen**. Die entsprechenden Befehle des Programms nennt man **„Cmdlets“** (gesprochen „Commandlets“, was in etwa dem Wort „Befehlchen“ entspricht) genannt. Gemäß einer konsistenten Syntax werden sie stets **aus einem Verb und einem Substantiv** im Singular zusammengesetzt, zum Beispiel *Stop-Process* oder *Sort-Object*. Parameter werden in einem Cmdlet gemäß der Formel *-Parameter \[Wert\]* angegeben, zum Beispiel:

```none
Get-EventLog System Newest 3 (zum Aufrufen der drei neuesten Einträge im System-Ereignisprotokoll)
```

---

### Tipp

Zwar ist es Kanon bei PowerShell, Befehle mit großem Anfangsbuchstaben einzugeben, die Kleinschreibung funktioniert aber ebenso.

---

Die mehr als 100 Kern-Cmdlets umfassen auch häufig genutzte Standardbefehle aus der Eingabeaufforderung, die neben anderen als sogenannte **„Aliase“** verfügbar sind und Umsteigern die ersten Schritte mit der neuen Shell erleichtern sollen. So hat der zum Wechseln eines Verzeichnisses gedachte Befehl *cd* beispielsweise das Äquivalent *Set-Location*, das exakt dieselbe Funktion erfüllt. Sämtliche vorgefertigten Aliase lassen sich mit dem Cmdlet *Get-Alias* anzeigen. Darüber hinaus kann man mit dem Cmdlet *Set-Alias* auch eigene Aliase erstellen. Mit der folgenden Pipe können Sie beispielsweise dem Befehl „notepad“ (für das Programm Notepad) das Alias „ed“ zuweisen, sodass zum Ausführen des Programms weniger Tastenanschläge vonnöten sind:

```none
Set-Alias ed notepad (um Notepad mit dem Befehl ed zu öffnen)
Set-Alias scr1 C:\Users\IEUser\Desktop\script1.ps1 (um ein Skript mit der Abkürzung scr1 zu starten)
```

[![Bild: Ergebnisse des Cmdlets Get-Alias](https://www.ionos.at/digitalguide/fileadmin/_processed_/8/4/csm_windows-powershell3_b87a30956d.webp "Ergebnisse des Cmdlets Get-Alias")](https://www.ionos.at/digitalguide/fileadmin/DigitalGuide/Screenshots_2018/windows-powershell3.png) Mit dem Cmdlet Get-Alias werden alle voreingestellten Aliase von PowerShell angezeigt.     Die folgende Tabelle enthält einige Beispiele für **häufig genutzte Cmdlets und ihre verwandten Aliase**:

<table>
  <thead>
    <tr>
      <th>Alias</th>
      <th>Cmdlet</th>
      <th>Funktion</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>cd</td>
      <td>Set-Location</td>
      <td>Aktuelles Verzeichnis wechseln</td>
    </tr>
    <tr>
      <td>dir</td>
      <td>Get-ChildItem</td>
      <td>Alle Elemente eines Ordners auflisten</td>
    </tr>
    <tr>
      <td>gi</td>
      <td>Get-Item</td>
      <td>Ein bestimmtes Element aufrufen</td>
    </tr>
    <tr>
      <td>ps</td>
      <td>Get-Process</td>
      <td>Alle Prozesse auflisten</td>
    </tr>
    <tr>
      <td>gsv</td>
      <td>Get-Service</td>
      <td>Alle installierten Dienste auflisten</td>
    </tr>
    <tr>
      <td>gm</td>
      <td>Get-Member</td>
      <td>Alle Eigenschaften und Methoden eines Objekts anzeigen</td>
    </tr>
    <tr>
      <td>clear</td>
      <td>Clear-Host</td>
      <td>Den PowerShell-Host leeren</td>
    </tr>
  </tbody>
</table>

Die strikte und zugleich leichter nachzuvollziehende Befehlsstruktur von PowerShell ermöglicht es, effizienter zu arbeiten als in der Eingabeaufforderung. Noch mehr Zeit gewinnt man durch Option, **halb ausgeschriebene Cmdlets mit der Taste \[Tab\] automatisch zu vervollständigen**. In vielen Fällen erkennt das Programm sogar unvollständig eingetippte Befehle.

Cmdlets lassen sich sowohl einzeln ausführen als auch **per Pipelining miteinander verknüpfen**, sodass der Output eines Objekts vom nachfolgenden Objekt gelesen und weiterverwendet werden kann. Zum Hinzufügen zweier Cmdlets in dieselbe Pipeline verwenden Sie einfach das |-Symbol. Auf diese Weise kann man zum Beispiel alle verfügbaren Prozesse auflisten und im selben Zuge nach ihrer ID sortieren:

```none
Get-Process | Sort-Object ID
```

[![Bild: Ergebnisse der Pipeline Get-Process | Sort-Object ID](https://www.ionos.at/digitalguide/fileadmin/_processed_/e/1/csm_windows-powershell4_bc010ab70d.webp "Ergebnisse der Pipeline Get-Process | Sort-Object ID")](https://www.ionos.at/digitalguide/fileadmin/DigitalGuide/Screenshots_2018/windows-powershell4.png) Mithilfe von Pipelining kann Windows PowerShell auch komplexe Aufgaben bewältigen, etwa alle Prozesse anzeigen und nach ID sortieren.     **Variablen** definiert man mit dem $-Symbol. Sie können wie üblich **zur Speicherung von Outputs** verwendet werden, um sie beim Pipelining zu einem späteren Zeitpunkt wiederaufzugreifen. PowerShell ist dadurch sogar in der Lage, die Ergebnisse **mehrerer über eine Pipeline verknüpfter Befehle auf einmal zu speichern**, zum Beispiel:

```none
$a = (Get-Process | Sort-Object ID)
```

### Die PowerShell Scripting Language

Vieles an der Skriptsprache von PowerShell mag einem von C# und anderen Skriptsprachen bekannt vorkommen. Mit ihr kann man nicht nur eigene Cmdlets schreiben (und bei Bedarf mit anderen Nutzern teilen), man kann auch **mehrere Befehle in Folge in einer Skript-Datei** mit dem Format .ps1 verpacken und damit **den Funktionsumfang der Shell erweitern**. Denkbar sind zahlreiche Anwendungsbeispiele: von der Ausführung simpler Routineaufgaben bis hin zur nahezu vollständigen Automatisierung von Überwachungs- und Kontrollprozessen. Skripte enthalten dabei immer eine Anwendungsbeschreibung und werden mit dem Präfix „*.*“ gefolgt vom vollständigen Dateipfad ausgeführt. Ein Beispiel:

```none
.C:\Users\IEUser\Desktop\script1.ps1
```

## Was sind typische Anwendungsbereiche der PowerShell?

Ausreichende Übung und Fachkenntnis vorausgesetzt, lassen sich mit PowerShell viele **Systemverwaltungsaufgaben deutlich effizienter gestalten**. Im Folgenden erläutern wir Ihnen vier typische Anwendungsbeispiele.

### Verzeichnisorganisation: Mehrere Dateien zugleich umbenennen

Angenommen, Sie müssen etwa 1.000 Dokumente des Schemas *Text (1)[.docx](https://www.ionos.at/digitalguide/online-marketing/verkaufen-im-internet/was-ist-eine-docx-datei/ "Was ist eine .docx-Datei?")*, *Text (2).docx* usw. so umbenennen, dass die Leerzeichen im Dateinamen durch Unterstriche ersetzt werden: Sich jedes Dokument einzeln vorzunehmen, wäre dann nicht ratsam. Stattdessen würden Sie wahrscheinlich eher mit cmd.exe arbeiten oder – noch besser – auf ein externes Tool zurückgreifen. Das **Pipelining in PowerShell erlaubt aber noch mehr Flexibilität beim Umbenennen großer Datenmengen**.

Begeben Sie sich dafür zuerst **in das Verzeichnis, in dem sich die Dokumente befinden**. Das geht ganz einfach mit dem Cmdlet *Set-Location* in Kombination mit dem vollständigen Dateipfad. Hier ein Beispiel:

```none
Set-Location C:\Users\IEUser\Desktop\Text folder
```

[![Bild: Eingabefeld im Pfad eines Verzeichnisses, in das „powershell“ eingegeben wurde](https://www.ionos.at/digitalguide/fileadmin/_processed_/e/e/csm_windows-powershell5_d2668ccee1.webp "Eingabefeld im Pfad eines Verzeichnisses, in das „powershell“ eingegeben wurde")](https://www.ionos.at/digitalguide/fileadmin/DigitalGuide/Screenshots_2018/windows-powershell5.png) Indem Sie den Begriff „powershell“ im Pfad eines Verzeichnisses eingeben, öffnen Sie an eben dieser Stelle ein PowerShell-Fenster, anstatt per Texteingabe erst dorthin navigieren zu müssen.     Alternativ können Sie auch **über den Windows-Explorer in das entsprechende Verzeichnis navigieren, in die Pfadleiste klicken und „powershell“ eingeben**, um ein PowerShell-Fenster für das Verzeichnis zu öffnen. Mit folgendem Cmdlet nennen Sie dann die ausgewählten Dokumente um:

```none
Get-ChildItem *docx | Rename-Item -NewName {$_.name -replace " ","_"}
```

Zur Erklärung: *Get-ChildItem* listet alle Dateien im Verzeichnis auf. Durch den Zusatz *\*docx* werden nur die Word-Dokumente mit dem entsprechenden Format herausgefiltert – ebenfalls im Ordner befindliche PDF-Dokumente würden also nicht berücksichtigt werden. Mit dem |-Symbol fügen Sie einen weiteren Befehl zur Pipeline hinzu, nämlich *Rename-Item*, der signalisiert, dass etwas umbenannt werden soll. *-NewName* gibt den neuen Namen anhand eines Skriptblocks an, der mit der Variable *$\_.name* arbeitet, die das aktuelle Objekt repräsentiert. Und *.name* ist die Eigenschaft mit dem Dateinamen. Zuletzt geben Sie mit dem Parameter *-replace* an, dass sämtliche Leerzeichen in Unterstriche umgewandelt werden sollen.

[![Bild: Ergebnis der Umbenennung von Dateien via PowerShell](https://www.ionos.at/digitalguide/fileadmin/_processed_/4/b/csm_windows-powershell6_bd08707fc4.webp "Ergebnis der Umbenennung von Dateien via PowerShell")](https://www.ionos.at/digitalguide/fileadmin/DigitalGuide/Screenshots_2018/windows-powershell6.png) Indem Sie \*docx als Dateiformat vordefiniert haben, wird das PDF von der Umbenennung ausgeschlossen.       ###  Datenerfassung: Laufende Dienste auf einem PC überprüfen

Vor der Implementierung einer neuen Sicherheitslösung im Netzwerk sollten Sie überprüfen, **welche Dienste auf einem bestimmten PC bereits installiert sind**. Grundwerkzeug dafür ist das Cmdlet *Get-Service*, mit dem sämtliche Dienste aufgelistet werden. Durch die **Filterfunktionen in PowerShell** können Sie sich auch nur eine Teilmenge der Ergebnisse anzeigen lassen – zum Beispiel sämtliche laufende Dienste. Das funktioniert mit folgendem Cmdlet:

```none
Get-Service | Where-Object {$_.status -eq "running"}
```

Der Output von *Get-Service* wird hier an das Cmdlet *Where-Object* per Pipeline weitergeleitet. *Where-Object* filtert sämtliche Dienste nach ihrem Status (dargestellt durch die Variable *$\_.status* und den Parameter *-eq "running"*) und listet die laufenden Dienste auf. Je nach Bedarf können Sie die vorgefilterte Liste auch nach Display-Namen **sortieren lassen**, indem Sie ein weiteres Cmdlet zur Pipeline hinzufügen:

```none
Get-Service | Where-Object {$_.status -eq "running"} | Sort-Object DisplayName
```

[![Bild: Ergebnisse der Pipeline Get-Service | Where-Object {$_.status –eq "running"} | Sort-Object DisplayName](https://www.ionos.at/digitalguide/fileadmin/_processed_/2/3/csm_windows-powershell7_2ae72f22d3.webp "Ergebnisse der Pipeline Get-Service | Where-Object {$_.status –eq "running"} | Sort-Object DisplayName")](https://www.ionos.at/digitalguide/fileadmin/DigitalGuide/Screenshots_2018/windows-powershell7.png) Mithilfe der Filterfunktionen von PowerShell können Sie sich eine Teilmenge der auf einem System installierten Dienste anzeigen lassen.       ---

### Tipp

Mit dem Pipeline-Zusatz *more* kann man die lange Dienst-Auflistung auch so umstrukturieren, dass man sie seitenweise durchblättern kann.

---

### Fehlerdiagnose: Ereignisprotokoll nach Systemfehlern durchsuchen

Ereignisprotokolle (Englisch *event logs*) geben Systemadministratoren Aufschluss über Fehlermeldungen in Anwendungen, im Betriebssystem oder in den Sicherheitsfunktionen eines Geräts. Mit dem Befehl *Get-EventLog* können Sie diese **Protokolle einsehen und verwalten**. Wollen Sie beispielsweise einen Blick auf die Fehlermeldungen der Ereignisanzeige „System“ werfen, geben Sie Folgendes ein:

```none
Get-EventLog System | Where-Object {$_.entryType -Match "Error"}
```

Gibt PowerShell zu viele Ergebnisse aus, sodass Sie die Übersicht verlieren, können Sie die Liste mit dem Parameter *-Newest 100* auf die neuesten 100 System-Logeinträge beschränken, die anschließend nach Fehlern gefiltert werden:

```none
Get-EventLog System -Newest 100 | Where-Object {$_.entryType -Match "Error"}
```

Detaillierte Informationen über einzelne Fehlermeldungen erhalten Sie, indem Sie den Output dieser Pipeline an das Cmdlet *Format-List* weiterleiten:

```none
Get-EventLog System -Newest 100 | Where-Object {$_.entryType -Match "Error"} | Format-List
```

[![Bild: Ergebnisse der Pipeline Get-EventLog System -Newest 100 | Where-Object {$_.entryType -Match "Error"} und Fortmat-List](https://www.ionos.at/digitalguide/fileadmin/_processed_/5/e/csm_windows-powershell8_8c8add0356.webp "Ergebnisse der Pipeline Get-EventLog System -Newest 100 | Where-Object {$_.entryType -Match "Error"} und Fortmat-List")](https://www.ionos.at/digitalguide/fileadmin/DigitalGuide/Screenshots_2018/windows-powershell8.png) Große Datenmengen wie etwa Ereignisprotokolle können nach von Ihnen gewählten Kriterien zusammengekürzt und genauer betrachtet werden.       ###  Fernwartung: Dienste auf Remotecomputern kontrollieren

Die **Windows Management Instrumentation (WMI)** gewährt Zugriff auf nahezu alle Einstellungen und Funktionen von Windows-Computern und stellt damit das wichtigste Werkzeug zur Automatisierung von Prozessen und zur Fernwartung digitaler Arbeitsplätze dar. Das dazugehörige Cmdlet *Get-WmiObject* kann man auch für Remotecomputer anwenden, sodass Sie die **Windows PowerShell auch als Systemverwaltungstool nutzen können**. Benötigen Sie beispielsweise Informationen der Klasse Win32\_BIOS über einen Rechner im Netzwerk (dargestellt mit dem Parameter *-Rechnername*), hilft Ihnen der folgende Befehl weiter:

```none
Get-WmiObject Win32_Bios -Rechnername
```

Alternativ können Sie auch mit dem Parameter *-Class* gefolgt vom vollständigen Pfad der Klasse arbeiten:

```none
Get-WmiObject -Rechnername -Class Win32_Service
```

Per Fernzugriff können Sie nun auf systeminterne Einstellungen des Fremdrechners zugreifen. Das nachfolgende Beispiel verdeutlicht, wie man die Methoden des Dienstes Windows Update Client abrufen kann, um herauszufinden, mit welchen Cmdlets sich dieser starten, stoppen und neu starten lässt:

```none
Get-WmiObject -Rechnername -Class Win32_Service -Filter "Name='wuauserv'"
```

[![Bild: Ergebnisse der Pipeline Get-WmiObject -Rechnername -Class Win32_Service -Filter "Name='wuauserv'"](https://www.ionos.at/digitalguide/fileadmin/_processed_/2/c/csm_windows-powershell9_fe72ff6f67.webp "Ergebnisse der Pipeline Get-WmiObject -Rechnername -Class Win32_Service -Filter "Name='wuauserv'"")](https://www.ionos.at/digitalguide/fileadmin/DigitalGuide/Screenshots_2018/windows-powershell9.png) Mit dem Cmdlet Get-WmiObject kann man nicht nur auf die internen Einstellungen und Funktionen eines Remotecomputers, sondern auch auf die des eigenen Rechners zugreifen.     Wie Sie sehen, wird per *Get-WmiObject -Rechnername* zuerst der gewünschte Rechner angepeilt und dann die Klasse *Win32\_Service* mithilfe des Parameters *-Class* ausgewählt. Aus den vorhandenen Diensten wird dann der Windows Update Client mit dem Kürzel *wuauserv* herausgefiltert. Mit dem bereits bekannten Cmdlet *Get-Member* und dem Parameter *-Type Method* erhalten Sie dann einen Überblick über sämtliche Methoden für *wuauserv*, die Sie zur vollen Kontrolle des Clients aus der Ferne befähigen:

```none
Get-WmiObject -Rechnername -Class Win32_Service -Filter "Name='wuauserv'" | Get-Member -Type Method
```

[![Bild: Ergebnis der Pipeline Get-WmiObject -Rechnername -Class Win32_Service -Filter "Name='wuauserv'" | Get-Member -Type Method](https://www.ionos.at/digitalguide/fileadmin/_processed_/6/c/csm_windows-powershell10_432af69c99.webp "Ergebnis der Pipeline Get-WmiObject -Rechnername -Class Win32_Service -Filter "Name='wuauserv'" | Get-Member -Type Method")](https://www.ionos.at/digitalguide/fileadmin/DigitalGuide/Screenshots_2018/windows-powershell10.png) Das Cmdlet Get-Member listet alle Eigenschaften und Methoden auf, die für ein .NET-Objekt verfügbar sind.


This is a markdown version of: [https://www.ionos.at/digitalguide/server/knowhow/windows-powershell/](https://www.ionos.at/digitalguide/server/knowhow/windows-powershell/) for AI/LLM consumption.