Die 10 wichtigsten PowerShell-Befehle, die Sie kennen sollten
In diesem Artikel stellen wir Ihnen die zehn wichtigsten PowerShell-Befehle für die Verwaltung von Windows-PCs, die Überprüfung von Diensten und Prozessen, die Erstellung automatisierter Aufgaben und Ausgabeoptionen vor. Wenn Sie PowerShell noch nie verwendet haben, ist dies eine sehr vielseitige Lösung zur Aufgabenautomatisierung, und wir denken, dass die in diesem Artikel beschriebenen PowerShell-Befehle Ihnen das Leben leichter machen werden.
Inhaltsverzeichnis
Haben Sie sich jemals über die Grundfunktionen von PowerShell gewundert? Vielleicht haben Sie einige der grundlegenden Befehle nur überflogen, wenn Sie online einen Befehl oder ein Skript gefunden haben? Dinge wie "Get-Help" oder "Export-CSV"? Dann ist dies der richtige Artikel für Sie. Wir gehen auf die 10 wichtigsten PowerShell-Befehle ein, die jeder Systemadministrator kennen sollte.
Einführung
Eine der effizientesten Möglichkeiten, PowerShell zu nutzen, besteht darin, die Grundlagen zu verstehen. Sich mit der Syntax vertraut machen. Verstehen, wie Variablen funktionieren. Durch die Verwendung der Aliase, die für viele dieser Befehle verfügbar sind, besonders effizient zu werden. Wenn Sie die absoluten Grundlagen kennen, können Sie Ihr Wissen und Ihre Fähigkeiten ausbauen, indem Sie effizienter und produktiver werden, insbesondere wenn Sie immer größere Datensätze "verarbeiten" müssen.
Mit ein paar grundlegenden PowerShell-Befehlen werden Sie zum Profi und können Verwaltungsaufgaben effizienter automatisieren.
Warum ist PowerShell ein wichtiges Tool für Windows-Administratoren?
Windows PowerShell gibt es seit dem 14. November 2006. Als Skriptsprache ist PowerShell vor allem deshalb wichtig und unverzichtbar, weil sie Ihnen bei der Verwaltung verschiedener Datentypen und Objekte viel Zeit spart.
Nehmen wir zum Beispiel an, Ihr Unternehmen gründet ein neues Team. Sie haben etwa 200 Mitarbeiter, die dieses neue Team bilden. Sie haben die Aufgabe, die Attribute "Titel" der Stellen in Active Directory zu ändern. Ich glaube nicht, dass es Ihnen Spaß machen würde, jedes einzelne Benutzerobjekt zu öffnen, die Änderung des Titels vorzunehmen und dann zum nächsten überzugehen. 200 Mal?
Mit den verschiedenen verfügbaren PowerShell-Cmdlets (sprich: Befehlslets) könnten Sie diese Aufgabe mit einem oder zwei Befehlen erledigen. Es gibt Hunderte von Cmdlets, Hunderte von Parametern und viele Methoden zur Ausgabe der benötigten Informationen.
Sie können die Informationen auf dem Bildschirm anzeigen lassen, das Layout des Textes auf dem Bildschirm anpassen, sie in eine CSV-Datei (Comma Separated Value) für die spätere Verwendung in Excel exportieren und sie sogar einfach in eine einfache Textdatei ausgeben.
Die 10 wichtigsten PowerShell-Befehle für Windows-Administratoren
Lassen Sie mich hier die Top 10 PowerShell-Befehle durchgehen. Wie Sie feststellen werden, springe ich in der Liste mit verschiedenen Optimierungen, die Sie am Kernbefehl vornehmen können, herum, wobei es meist darum geht, nur die benötigten Informationen zu erhalten und den Rest zu ignorieren. Sie werden sehen, was ich meine.
Sie können jedoch jederzeit zum Kern der 10 wichtigsten Befehle gelangen, indem Sie die nachstehende Übersicht verwenden.
Get-Command
Das Cmdlet "Get-Command" listet alle verfügbaren Cmdlets auf, die in Ihrer aktuellen Terminalsitzung oder Ihrem PowerShell-Fenster verfügbar sind. Wenn Sie zusätzliche Module installiert und importiert haben, die über die in PowerShell enthaltenen Module hinausgehen (Microsoft Teams, Microsoft Exchange usw.), werden sie hier aufgelistet.
Get-Command
Mit diesem Befehl werden alle Befehle an die Konsole gesendet. Das ist nicht unbedingt hilfreich, da alle Befehle einfach vorbeigezogen werden. Wir müssen also die Ausgabe ändern, um sie übersichtlicher zu gestalten. Das können wir tun, indem wir sie in eine CSV-Datei exportieren.
Get-Command | export-csv c:\temp\AlleBefehle.csv
Dadurch wird eine vollständigere und detailliertere Auflistung in kommagetrennten Werten erstellt, die von Excel natürlich erkannt wird. Wenn Sie dies tun, werden Sie feststellen, dass eine Menge überflüssiger Spalten vorhanden sind, die Sie wahrscheinlich nicht benötigen. Bevor wir also die Daten exportieren, sollten wir zunächst nur die gewünschten Spalten (Felder) auswählen.
Beachten Sie übrigens das Pipe-Zeichen "|" im vorherigen Befehl. Damit wird PowerShell angewiesen, alle Ausgaben, die Sie haben, in den nächsten Befehl oder das nächste Cmdlet zu leiten. Mit ALLEN Informationen, die wir aus dem Get-Befehl erhalten, wählen wir jetzt nur die Spalten Name, Quelle und Version aus. Diese Teilmenge von Daten wird dann über die Pipeline an das Cmdlet "export-csv" übergeben.
Get-Command | Select Name, Source, Version | export-csv c:\temp\AlleBefehle2.csv
Get-Help
Der Befehl Get-Help tut genau das, was Sie vermuten: Er gibt Ihnen Hilfe. Wenn Sie diesen Befehl ausführen, erhalten Sie die grundlegenden Informationen darüber, was Get-Help für Sie tun kann und wie Sie es auf verschiedene Weise verwenden können.
Das Cmdlet "Get-Help" zeigt in der Befehlszeile Hilfe aus dem Inhalt von Hilfedateien auf Ihrem Computer an. Ohne Hilfedateien zeigt Get-Help grundlegende Hilfe zu Cmdlets und Funktionen an. Sie können Get-Help auch verwenden, um die Onlinehilfe für Cmdlets und Funktionen anzuzeigen.
Führen Sie den Befehl aus, um die neuesten Hilfeinformationen, einschließlich Beispiele für jedes Cmdlet, herunterzuladen:
Update-Help
Jetzt verfügen Sie über eine solidere Dokumentation für jeden Befehl. Apropos Beispiele: Fügen Sie die Option "-Examples" am Ende des Befehls hinzu, um eine Reihe von Beispielen zu erhalten, die Ihnen helfen, das Cmdlet und die Funktionsweise seiner verschiedenen Attribute und Schalter zu verstehen.
Get-Help Get-Process -Examples
Get-Process
Mit dem Windows Task Manager können Sie alle laufenden Anwendungen, Prozesse, Programme usw. auf Ihrem lokalen Computer anzeigen. Wollten Sie schon immer ein Befehlszeilentool verwenden, um an diese Informationen heranzukommen, und das ganz schnell? Hier kommt der Befehl Get-Process ins Spiel. Er listet alle laufenden Prozesse mit vielen Beispielen auf, um die Ausgabe anzupassen und zu präzisieren, wonach Sie genau suchen.
Get-Process
Möchten Sie schnell herausfinden, welche Version der Teams-Desktop-Anwendung auf dem Computer ausgeführt wird? Sie können den folgenden Befehl verwenden
Get-Process teams -FileVersionInfo
Anzeigen der Dateiversionen von Microsoft Teams auf dem Computer
Stop-Process
Sie können nicht nur mit Get-Command ermitteln, welche Prozesse ausgeführt werden, sondern auch mit Stop-Process direkt aus PowerShell heraus Aufgaben auf einem Prozess beenden. Sie können ihn anhand von Name, Prozess-ID (PID) und verschiedenen anderen Attributen identifizieren. Nehmen wir ein Beispiel mit NotePad.
Stop-Process -Name "notepad"
Damit werden ALLE Instanzen von NotePad auf dem Computer gestoppt. Wenn Sie es auf eine Instanz von NotePad unter einer bestimmten PID eingrenzen wollen, verwenden Sie:
Stop-Process -Id 3952 -Confirm -PassThru
Der Schalter -Confirm weist PowerShell an, Sie zunächst aufzufordern, die Ausführung des Befehls zu bestätigen. Der Befehl -PassThru weist PowerShell an, eine Bestätigung des Prozesses anzuzeigen, der durch den Befehl angehalten wird. Standardmäßig gibt es nach dem Befehl Stop-Process keine Ausgabe.
Get-Service
Mit dem Befehl Get-Service werden Objekte abgerufen, die die Dienste auf einem Computer darstellen, einschließlich laufender und angehaltener Dienste. Wie lange dauert es, bis Sie die Microsoft Management Console öffnen? Wenn Sie einen langsamen Computer verwenden, eine Grafikstörung auftritt oder MMC.EXE ständig abstürzt, kommt der PowerShell-Befehl Get-Service zur Hilfe.
Get-Service
Dieser Befehl listet alle installierten Dienste auf und zeigt Ihnen den Betriebsstatus, den Dienstnamen und den Anzeigenamen an. Möchten Sie alle Dienste mit "Adobe" im Anzeigenamen herausfinden? Das können Sie ganz einfach mit dem folgenden Befehl tun:
Get-Service -DisplayName "*Adobe*"
Oder wie wäre es mit allen Diensten, die mit einem 'S' beginnen?
Get-Dienst S*
Get-History
Obwohl PowerShell alle eingegebenen Befehle (bis zu einem gewissen Punkt) speichert, können Sie mit dem Befehl "Get-History" eine Liste aller während der aktuellen Sitzung eingegebenen Befehle erhalten. Geben Sie einfach ein:
Get-History
Auch hier können Sie alle Ausgabebefehle nutzen, um diese irgendwo zu speichern. Exportieren Sie sie in eine CSV-Datei, oder sehen Sie weiter unten, wie Sie die Informationen in eine HTML-Datei ausgeben können, um sie in einem Ihrer Browser-Tabs geöffnet zu halten.
Start-Job
Dieser Start-Job-Befehl ist eigentlich ziemlich interessant. Anstatt weitere PowerShell-Sitzungen oder Fenster und Konsolensitzungen zu öffnen, um "länger laufende" Skripte oder Befehle auszuführen, können Sie mit diesem Befehl ganz einfach einen neuen Hintergrundprozess starten.
Start-Job -ScriptBlock {Get-Command}
Mit diesem Befehl wird ein Hintergrundprozess gestartet und der im {}-Wert enthaltene Befehl ausgeführt. Sie können dort alles eingeben, was Sie wollen. Um den Status dieses Auftrags zu überprüfen, verwenden Sie einfach das Cmdlet "Get-Job".
Get-Job
ConvertTo-HTML
Hier ist ein weiterer Ausgabebefehl, den Sie verwenden können, um die Sache etwas übersichtlicher zu gestalten. Mit dem Befehl "ConvertTo-Html" wird die Ausgabe in eine HTML-Datei übertragen, und die Informationen werden in gut lesbare Spalten formatiert. Sie können einfach jedes Cmdlet oder Cmdlets mit diesem Befehl am Ende über die Pipeline leiten und den Dateipfad und die Speicherortinformationen einschließen.
Get-Command | Select Name, Source, Version | ConvertTo-Html > c:\temp\AlleBefehle.html
Out-File
Out-File ist der einfachste PowerShell-Befehl, mit dem Sie die Ausgabe Ihrer PowerShell-Cmdlet(s) einfach in einer Rohtextdatei irgendwo auf Ihrem Computer speichern können.
Get-Service | Out-File c:\temp\ServicesList.txt
Export-CSV
Dieser Befehl ähnelt Out-File und ConvertTo-Html, aber dieser Export-CSV-Befehl gibt die Daten einfach im CSV-Format (Comma-Separated Value) aus.
Get-Command | Select Name, Source, Version | Export-Csv c:\temp\AlleBefehle2.csv
Auch hier werden alle PowerShell-Cmdlets aus dem System abgerufen. Sie müssen also nur die Datenspalten Name, Quelle und Version auswählen und sie im CSV-Format an den von Ihnen angegebenen Speicherort exportieren.
Viele weitere Möglichkeiten für Power-User
Die Eingabeaufforderung war schon immer sehr leistungsfähig. Wie Sie sehen können, ist die PowerShell aber um Längen leistungsfähiger. Zu den beliebtesten gehören Start-Process, Get-Item, Copy-Item, Remove-Item, Get-ChildItem usw.
Es gibt auch das Konzept der PowerShell-Skripte. Dabei handelt es sich um Dateien, die ein oder mehrere Cmdlets, Variablen und Befehle vom Typ "wenn-dann" enthalten. Mit ihnen können Sie eine ganze Reihe von Prozessen und Aufgaben automatisieren, die in Ihrer gesamten Umgebung anfallen.
Und falls Sie es noch nicht wussten: Solange Sie über die richtigen Berechtigungen verfügen, können Sie mit PowerShell auf Informationen auf einem Remote-Computer zugreifen und ihn sogar in gewisser Weise steuern. Alles, was Sie brauchen, ist der Computername und die Bestätigung, dass der Remotecomputer den Remotezugriff auf seine Systeme gestattet hat.
Ein wichtiger Punkt, den Sie berücksichtigen müssen, ist die Ausführung von PowerShell-Skripten. PowerShell wird mit einer so genannten "Ausführungsrichtlinie" geliefert. Darin wird festgelegt, welche Arten von Skripts ausgeführt werden können und welche zusätzlichen Sicherheitsmaßnahmen Sie möglicherweise benötigen. Windows führt beispielsweise keine PowerShell-Skripts aus, die Sie aus dem Internet oder aus Ihrem eigenen Netzwerk herunterladen. Sie können das Cmdlet "Set-ExecutionPolicy" verwenden, um die aktuellen Sicherheitsüberprüfungen in Ihrer Sitzung zu ändern.
Geben Sie zunächst ein:
Get-ExecutionPolicy
Dadurch erfahren Sie, in welchem Modus Sie sich befinden. Ich befinde mich im Modus "RemoteSigned" (remote signiert), was bedeutet, dass nur Skripts ausgeführt werden dürfen, die von Microsoft oder einer Remote-Einheit signiert wurden. Sie können die Richtlinie mit dem Befehl Set-ExecutionPolicy ändern:
Set-ExecutionPolicy Unrestricted
Dies ist der einfachste Weg, ein Skript auszuführen, aber auch der gefährlichste. JEDES PowerShell-Skript, auch bösartige, kann ausgeführt werden. Sie müssen nur darauf achten, dass Sie Ihre aktuelle PowerShell-Konsole oder -Sitzung schließen, wenn Sie fertig sind.
Ein weiteres Konzept, das wir hier ansprechen wollen, sind Variablen. Das ist das Besondere an einem PowerShell-Skript. Wenn Sie den Inhalt eines "Get-"-Befehls in einer Variablen speichern, können Sie weiter unten in Ihrem Skript eleganter auf die Informationen in dieser Variablen zugreifen. Hier ist ein Beispiel:
$Data = import-csv c:\benutzer\xyz\downloads\UserList.csv
Get-Mailbox $Data.Name -DisplayName
Damit werden einfach alle "Benutzer" aus der im Ordner "Downloads" gespeicherten CSV-Datei in die Variable "$Data" importiert. Mit dem nächsten Befehl werden die Exchange (Online)-Postfächer für diese Benutzer geladen und das Attribut "DisplayName" jedes Benutzers ausgegeben. Dies ist sehr vereinfacht, aber Sie können sich eine Vorstellung davon machen, wie umfangreich die Verwendung dieses einfachen Beispiels sein kann.