PowerShell ist eine Befehlszeilen- und Skripting-Plattform, die Systemadministratoren bei der Verwaltung und Automatisierung von Aufgaben in einer Windows-Umgebung unterstützt.
PowerShell basiert auf .NET Framework und verfügt über bessere Funktionen als die herkömmliche Befehlszeile. Es unterstützt Cmdlets, Objekte und Pipelines, mit denen Benutzer komplexe Aufgaben problemlos ausführen können.
PowerShell ist ein sehr wichtiges Tool in der Windows-Administration. Mit den vorhandenen Funktionen können Administratoren:
- Verwalten Sie Systeme effizienter, ohne grafische Oberflächen verwenden zu müssen.
- Automatisieren Sie Routineaufgaben wie Servicemanagement, Systemeinrichtung oder Leistungsüberwachung.
- Reduzieren Sie die Wahrscheinlichkeit menschlicher Fehler, indem Sie standardisierte Skripte verwenden.
PowerShell steigert nicht nur die Produktivität, sondern bietet auch mehr Flexibilität, um Probleme direkt zu lösen, selbst in großen und komplexen Systemumgebungen. Dies macht es zu einem bevorzugten Tool für moderne Administratoren, die eine schnelle und präzise Lösung benötigen.
Was sind Cmdlets?
Cmdlets sind kleine Programme, die erstellt werden, um bestimmte Aufgaben in PowerShell auszuführen. Sie dienen als Werkzeug zur Verwaltung und Automatisierung verschiedener Aspekte des Windows-Betriebssystems.
Cmdlets werden in Form von .NET-Klassen geschrieben, in der Regel unter Verwendung von C. Cmdlets können in PowerShell enthalten sein oder Teil anderer Anwendungen und Dienste sein, z. B. VMware- oder Windows Server-Features. Mit Cmdlets können Benutzer auf einfache Weise Informationen abrufen, Einstellungen ändern und verschiedene andere Vorgänge ausführen.
Beispiele für beliebte Befehle
Zwei Beispiele für häufig verwendete Cmdlets sind:
1. Get-Process
Diese Cmdlets werden verwendet, um Informationen über alle Prozesse abzurufen, die auf dem System ausgeführt werden. Wenn Sie z. B. den folgenden Befehl ausführen, wird eine Liste aller aktiven Prozesse angezeigt:
Get-Process2. Get-Service
Diese Cmdlets werden verwendet, um Informationen zu allen im System aufgelisteten Diensten abzurufen. Mit diesem Befehl kann der Benutzer den Status des Dienstes anzeigen (unabhängig davon, ob er ausgeführt oder gestoppt wurde):
Get-ServiceVorteile der Verwendung der Substantiv-Verb-Syntax in Cmdlets
Eines der herausragenden Features von Cmdlets ist die strikte Verwendung der noun-verb-Syntax. Dies bedeutet, dass jedes Cmdlet mit einem klaren Muster benannt wird, wobei der erste Teil (Substantiv) das verwaltete Objekt und der zweite Teil (Verb) die Aktion angibt, die für das Objekt ausgeführt wird. Beispiele:
- Get: Abrufen von Informationen.
- Set: Ändern Sie die Konfiguration.
- Remove: Löschen Sie ein Objekt.
Zu den Vorteilen dieser Syntax gehören:
- Benutzer können andere relevante Cmdlets leicht finden, indem sie das Benennungsmuster verstehen.
- Eine konsistente Syntax hilft neuen Benutzern, Cmdlets schneller zu erlernen und zu verwenden.
- Eindeutige Cmdlet-Namen erleichtern das Lesen und Verstehen von Skripts.
Objekte in PowerShell
In PowerShell ist ein Objekt eine Datenstruktur, die eine bestimmte Entität in einem System beschreibt, z. B. eine Datei, einen Prozess oder einen Dienst. Jedes Objekt verfügt über properties (Attribute) und methods (Methoden), die Informationen und Funktionen in Bezug auf diese Entität bereitstellen.
Eigenschaften sind die Eigenschaften eines Objekts, während Methoden Aktionen sind, die für ein Objekt ausgeführt werden können. Ein Prozessobjekt kann z. B. Eigenschaften wie Prozessname, CPU-Auslastung und Status aufweisen.
Generieren von Objekten mit Eigenschaften wie CPU-Auslastung durch Get-Process
Wenn Sie das Cmdlet Get-Process ausführen, generiert PowerShell ein Objekt, das alle Prozesse darstellt, die auf dem System aktiv sind. Jedes dieser Prozessobjekte verfügt über verschiedene Eigenschaften, darunter:
- Name: Der Name des Prozesses.
- Id: Eindeutige Identifizierung für den Prozess.
- CPU: CPU-Auslastung nach Prozessen.
Beispiel-Befehl:
Get-ProcessMit diesem Befehl erhalten Sie eine Liste der Prozessobjekte, und wenn Sie weitere Informationen zu einem der Objekte anzeigen möchten, können Sie das Cmdlet Get-Member verwenden, um die vorhandenen Eigenschaften und Methoden zu ermitteln:
Get-Process | Get-Member

Dadurch werden alle Eigenschaften und Methoden des vom Get-Process generierten Objekts angezeigt, einschließlich der CPU-Auslastung.
Vorteile von Objekten für die Automatisierung von Verwaltungsaufgaben
Die Verwendung von Objekten in PowerShell hat viele Vorteile für die Automatisierung von administrativen Aufgaben:
- Mit Objekten können Administratoren einfach auf Daten zugreifen und diese ändern, ohne eine komplexe Textverarbeitung durchführen zu müssen. Dies beschleunigt das Informationsmanagement und verbessert die Genauigkeit.
- Objekte machen PowerShell-Skripte klarer und leichter verständlich. Administratoren können die Eigenschaften von Objekten im Skript direkt verwenden, um bestimmte Aktionen auszuführen.
- PowerShell ermöglicht es Benutzern, Cmdlets über Pipelines zu verbinden, wobei die Ausgabe eines Cmdlets als Eingabe für andere Cmdlets verwendet werden kann. Dies erleichtert die sequentielle und effiziente Verarbeitung von Daten.
- Da PowerShell auf .NET basiert, ist jedes Objekt in PowerShell ein .NET-Objekt. Es bietet Zugriff auf eine Vielzahl von Methoden und Eigenschaften und erweitert die Verwaltungsfunktionen des Systems.
Vorteile von Objekten für die Automatisierung von Verwaltungsaufgaben
Die Verwendung von Objekten in PowerShell hat viele Vorteile für die Automatisierung von administrativen Aufgaben:
1. Einfache Datenmanipulation
Sie können die Daten einfach filtern, sortieren oder ändern. Zum Beispiel:
Get-Process | Where-Object {$_.CPU -gt 5}Dieser Befehl zeigt nur Prozesse mit einer CPU-Auslastung von mehr als 5 % an.
2. Integration mit anderen Cmdlets
Objekte können über die pipeline an andere Cmdlets übergeben werden, was die Erstellung komplexer Skripts ermöglicht. Beispiel:
Get-Process | Sort-Object CPU -Descending | Select-Object -First 5Dieser Befehl zeigt die 5 Prozesse mit der höchsten CPU-Auslastung an.
3. Effizienz des Skripts
Mit Objekten können Sie genauere und effizientere Skripte erstellen, wodurch das Risiko häufiger Fehler beim Analysieren von Rohtext verringert wird.
Verwenden von Pipelines für die Automatisierung
Pipeline ist ein großartiges Feature in PowerShell, mit dem Sie Ergebnisse von einem Cmdlet zu einem anderen streamen können. Dieses Konzept verwendet das Symbol | (Pipe), um Cmdlets zu verbinden, damit Sie einen effizienteren und flexibleren Automatisierungsprozess erstellen können.
In PowerShell dienen Pipelines dazu, objects from einem Cmdlet zu einem anderen zu fließen. Symbol | Trennen Sie Cmdlets, und lassen Sie zu, dass die Ergebnisse des ersten Cmdlets an das zweite Cmdlet übergeben werden, ohne temporäre Daten zu speichern.
Ein einfaches Beispiel:
Get-Process | Sort-Object CPU -Descending- Get-Process: Ruft eine Liste aller aktiven Prozesse auf dem System ab.
- Sort-Object CPU -Descending: Sortiert Prozesse basierend auf der CPU-Auslastung von der höchsten.
Das Ergebnis ist eine Liste von Prozessen, die nach CPU-Auslastung sortiert wurden.
Gruppieren von Prozessen basierend auf der Auslastung des virtuellen Speichers
Nehmen wir zum Beispiel an, Sie möchten wissen, welche Apps Virtual Memory (VM) am häufigsten verwenden, und Prozesse nach dem Unternehmen gruppieren, das sie erstellt hat. Hier sind die Schritte:
- Verwenden Sie Get-Process, um alle Prozesse auszuführen.
- Sortieren Sie Prozesse nach VM-Nutzung.
- Nehmen Sie eine bestimmte Anzahl von Prozessen, z. B. die Top 10.
- Gruppieren Sie Prozesse nach Company Eigenschaften.
Der vollständige Code:
Get-Process |
Sort-Object VM -Descending |
Select-Object -First 10 |
Group-Object Company- Sort-Object VM -Descending: Sortiert Prozesse basierend auf der Nutzung Virtual Memory von der höchsten.
- Select-Object -First 10: Wählen Sie die Top 10 Prozesse mit der höchsten VM-Auslastung aus.
- Group-Object Company: Gruppieren Sie Prozesse nach dem Namen des Unternehmens, das sie erstellt hat.
Die Ausgabe zeigt die höchste Company mana yang memiliki proses dengan penggunaan Virtual Memory an.
Kombinieren von Cmdlets für kompliziertere Lösungen
Pipelines erleichtern das Kombinieren von Cmdlets und das Erstellen komplexerer Lösungen, ohne dass schwieriger Code geschrieben werden muss. Wenn Sie z. B. einen Prozess finden möchten, der eine hohe CPU-Auslastung verwendet, und ihn beenden möchten, können Sie die folgende Pipeline verwenden:
Get-Process |
Where-Object {$_.CPU -gt 50} ||
Stop-Process- Where-Object {$_.CPU -gt 50}: Filtert Prozesse, die eine CPU-Auslastung von mehr als 50 % aufweisen.
- Stop-Process: Stoppt den gefilterten Prozess.
Diese Pipeline ermöglicht es Ihnen, Aufgaben mit klaren und organisierten Schritten zu automatisieren. Sie können auch Parameter hinzufügen, um die Lösung spezifischer zu gestalten, z. B. das Senden eines Berichts mit den Ergebnissen:
Get-Process |
Where-Object {$_.CPU -gt 50} ||
Export-Csv -Path “HighCPUProcesses.csv”Diese Pipeline speichert die Daten des CPU-intensiven Prozesses in einer CSV Datei.
Automatisierung mit PowerShell
Ein sehr nützliches Cmdlet in PowerShell ist Get-WindowsOptionalFeature. Mit diesem Cmdlet können Benutzer optionale Features anzeigen, die in Windows verfügbar sind, einschließlich ihres Status (unabhängig davon, ob sie aktiviert oder deaktiviert sind). Mit diesen Cmdlets können Administratoren vorhandene Features einfach verwalten und überwachen.
Um alle optionalen Funktionen in Windows anzuzeigen, können Sie den folgenden Befehl ausführen:
Get-WindowsOptionalFeature -OnlineMit diesem Befehl wird eine Liste von Objekten generiert, die jedes optionale Feature darstellen, einschließlich Eigenschaften wie FeatureName, State und einer Beschreibung des Features.
Schritte zum Erstellen eines einfachen Skripts für die Automatisierung
Im Folgenden finden Sie die Schritte zum Erstellen eines einfachen Skripts, das Get-WindowsOptionalFeature verwendet, um bestimmte Features automatisch zu überwachen und zu aktivieren:
- Führen Sie PowerShell mit Administratorrechten aus, um sicherzustellen, dass Sie über die erforderlichen Berechtigungen verfügen.
- Verwenden Sie das Cmdlet Get-WindowsOptionalFeature, um eine Liste aller optionalen Features abzurufen.
$features = Get-WindowsOptionalFeature -Online- Wenn Sie beispielsweise überprüfen möchten, ob die Funktion “TelnetClient” aktiviert ist oder nicht, können Sie die Ergebnisse filtern.
$telnetFeature = $features | Where-Objekt { $_. FeatureName -eq 'TelnetClient' }- Wenn das Feature nicht aktiv ist, können Sie es mit dem Cmdlet Enable-WindowsOptionalFeature aktivieren.
if ($telnetFeature.State -eq 'Disabled') {
Enable-WindowsOptionalFeature -Online -FeatureName 'TelnetClient' -All
Write-Host “TelnetClient feature has been enabled.”
} else {
Write-Host “TelnetClient feature is now active.”
}- Speichern Sie dieses Skript als .ps1-Datei, z. B. EnableTelnet.ps1, und führen Sie es in PowerShell aus.

