Website-Suche

Diese 5 Windows PowerShell-Befehle sind so gut, dass sie sich wie Schummeln anfühlen


Wenn Sie regelmäßig in PowerShell arbeiten, haben Sie wahrscheinlich Befehle, die Sie vergessen haben, erneut eingetippt, Protokolldateien manuell überprüft oder sich einzeln auf Servern angemeldet. Das wird auf Dauer ärgerlich, und es ist frustrierend zu wissen, dass man es wiederholt tun muss. Einige Cmdlets können diese Probleme für Sie lösen und sich für tägliche Benutzer als sehr nützlich erweisen.

Ergebnisse an ein durchsuchbares Fenster senden

Es bedeutet wirklich schnellen Zugriff

Wenn Sie eine große Menge Text in Ihrer Konsole durchblättern, werden Sie nicht in der Lage sein, bestimmte Informationen leicht zu finden. Das Out-GridView-Cmdlet hilft hier. Wenn Sie Ihre Ergebnisse in dieses Cmdlet weiterleiten, wird die Textausgabe in ein separates Fenster umgewandelt, in dem Ihre Daten in einer Tabelle dargestellt werden. Anstatt jedes Mal, wenn Sie etwas finden wollen, komplexen Filtercode anzupassen, bietet Ihnen dieser Befehl eine Punkt-und-Klick-Steuerung.

Das Fenster verfügt oben über ein Suchfilterfeld, mit dem Sie Tausende von Datenzeilen, wie dichte Ereignisprotokolle oder Hintergrundprozesse, einfach durchsuchen können, indem Sie ein Schlüsselwort eingeben. Sie können Informationen sortieren, indem Sie auf Spaltenüberschriften klicken oder Kriterienfilter mit Dropdown-Menüs hinzufügen, um die Ergebnisse einzugrenzen, ohne zusätzlichen Code hinzuzufügen.

Stellen Sie sicher, dass Sie -PassThru hinzufügen, da es das Rasterfenster zu einem interaktiven Auswahlwerkzeug macht. Es pausiert Ihr Skript und ermöglicht es Ihnen, bestimmte Zeilen hervorzuheben. Sobald Sie auf OK klicken, schließt sich das Fenster, und diese Elemente werden zurück in die Pipeline gesendet, sodass Ihr Skript weiter daran arbeiten kann. Dies ist ein großer Schritt, um zu lernen, wie man Windows automatisiert.

Code gleichzeitig auf vielen Computern ausführen

Mehr Arbeit in weniger Zeit erledigen

Wenn Sie viele Server betreiben, wissen Sie, wie es ist, sich einzeln auf jede Maschine einzuloggen, um Prüfungen oder Updates durchzuführen. Invoke-Command spart Zeit, weil es Code auf Hunderten von Remote-Maschinen gleichzeitig ausführt, anstatt jeden Server einzeln zu besuchen. Wahrscheinlich benötigen Sie es nicht in Hunderten, aber wenn Sie vier oder fünf haben, spart Ihnen dies viel Zeit.

Dieser Befehl verwendet Fernwartungsprotokolle wie WinRM unter Windows oder SSH für plattformübergreifende Setups, um Ein-zu-Viele-Fernsteuerung zu unterstützen. Er sendet Anweisungen an jeden Computer auf Ihrer Liste und sammelt die Ergebnisse in Ihrer Konsole. Wenn Sie dem Cmdlet einen Skriptblock übergeben, wird Ihr Code gleichzeitig an alle Zielsysteme gesendet. Während die Remote-Ausführungen beendet werden, kommen die Ergebnisse als Objekte in Ihre lokale Sitzung zurück, sodass Sie nicht jede Maschine überwachen müssen.

Um Ihnen zu helfen, die eingehenden Daten zu verfolgen, fügt PowerShell jedem Objekt eine PSComputerName-Eigenschaft hinzu, um anzuzeigen, von welchem Server es stammt. Dies gibt Ihnen eine Möglichkeit, die Daten lokal zu gruppieren und zu sortieren, um Unterschiede in Ihrer Einrichtung zu finden.

Verwendung von Verknüpfungen zur Suche nach früherer Arbeit

Hör auf, die gleichen Befehle immer wieder einzugeben

Wenn Sie Zeit damit verbracht haben, einen komplexen PowerShell-Befehl zu erstellen, könnten Sie einige Tage später feststellen, dass Sie dieselbe Logik benötigen, sich aber nicht mehr an die Syntax erinnern können. PowerShell verfügt über ein Befehlsverlaufsystem, das wie ein Aufzeichnungsprotokoll Ihrer früheren Arbeit ist und es Ihnen ermöglicht, zuvor ausgeführte Befehle abzurufen.

Wenn Sie einen Befehl eingeben, speichert PowerShell ihn. Moderne Umgebungen verwenden eine eingebaute Sitzungsverlauf und einen dauerhaften Verlauf, die vom PSReadLine-Modul verwaltet werden. Während der eingebaute Verlauf nur Befehle in Ihrer aktuellen Sitzung verfolgt und PowerShell sie löscht, wenn Sie das Fenster schließen, behält PSReadLine eine kontinuierliche Aufzeichnung.

Dieses Modul schreibt jeden Befehl, den Sie in allen Sitzungen eingeben, in eine Datei auf Ihrem Computer, damit Sie Ihre Arbeit über Neustarts hinweg nicht verlieren. Anstatt lange Skripte erneut einzugeben, können Sie eine Tastenkombination verwenden, um zuvor verwendete Befehle aufzurufen. Wenn Sie das Pfundzeichen # gefolgt von einem Schlüsselwort aus dem Befehl eingeben und die Tab-Taste drücken, durchsucht PowerShell Ihre Historie nach der zuletzt passenden Übereinstimmung. Drücken Sie einfach weiter die Tab-Taste, bis Sie finden, was Sie brauchen. Ich beginne mit #get und drücke dann Tab, und normalerweise findet es schneller, was ich brauche.

Beobachten, wie Dateien aktualisiert werden, während es passiert

Siehe Änderungen, sobald sie eintreffen

Es ist ärgerlich, denselben Befehl immer wieder auszuführen, nur um zu sehen, ob eine Protokolldatei aktualisiert wurde. Wenn Sie eine Datei live beobachten möchten, während das System in sie schreibt, ist das Get-Content-Cmdlet mit dem Parameter -Wait eine großartige Möglichkeit, dies zu tun. Normalerweise liest Get-Content eine Datei und zeigt Ihnen deren Inhalt an. Das Cmdlet verhält sich jedoch anders, wenn Sie den Parameter -Wait hinzufügen.

Anstatt die Datei zu schließen, hält PowerShell die Verbindung offen und prüft jede Sekunde auf neue Inhalte. Wenn das System neue Zeilen hinzufügt, sehen Sie sie auf Ihrem Bildschirm. Da Sie den Befehl nicht neu starten müssen, ist dies eine großartige Möglichkeit, Fehler zu überwachen oder zu verfolgen, wie ein Hintergrundprozess arbeitet.

Sie können dies anpassen, indem Sie -Wait mit Code wie -Tail kombinieren. Zum Beispiel, wenn Sie eine sehr große Protokolldatei überwachen, verwenden Sie -Tail, um nur die letzten Zeilen anzuzeigen, bevor es zu warten beginnt. So wird verhindert, dass Ihre Konsole zu viele alte Daten zeigt. Wenn Sie -TotalCount verwenden, um mehr Zeilen abzufragen, als die Datei enthält, zeigt Get-Content den aktuellen Inhalt an und wartet, bis das System die anderen Zeilen auf die Festplatte schreibt. Dies hilft Skripten, die pausieren müssen, bis ein bestimmtes Protokollereignis eintritt.

Listen eingrenzen, um bestimmte Elemente zu finden

Die Nadel im Heuhaufen finden






Die spezifischen Informationen, die Sie in einem großen Datensatz benötigen, zu finden, ist schwer, aber Filtern ist eine großartige Lösung. Wenn Sie mit zu vielen Ergebnissen umgehen, kürzt der Befehl Where-Object Listen, um nur die wichtigen Elemente anzuzeigen. Er nimmt die Ausgabe anderer Befehle und begrenzt diese Daten basierend auf den von Ihnen festgelegten Regeln. Sie können nach Dateien suchen, die zu groß sind, oder Systemdienste filtern, um diejenigen zu finden, die noch nicht gestartet wurden.

Das Where-Object-Cmdlet ist wie ein Torwächter in der Pipeline, der jedes Objekt überprüft und nur diejenigen passieren lässt, die Ihren Kriterien entsprechen, zum nächsten Befehl. PowerShell ermöglicht es Ihnen, diese Regeln mit einer einfacheren Syntax festzulegen, die wie natürliche Sprache gelesen werden kann. Dies erleichtert schnelle Überprüfungen, beispielsweise zu prüfen, ob der Status eines Dienstes einem bestimmten Zustand entspricht.

Für etwas Komplexeres können Sie die Scriptblock-Syntax mit geschweiften Klammern und Variablen verwenden, um mehrere Bedingungen gleichzeitig zu prüfen. Dies ermöglicht es Ihnen, Operatoren wie -and -or zu kombinieren, um spezifische Filter zu erstellen.


Behalte diese Befehle für die Zukunft griffbereit

Keines dieser Cmdlets benötigt zusätzliche Einrichtung oder Drittanbieter-Tools. Sie sind bereits in PowerShell enthalten, und das Einzige, was Sie davon trennt, sie zu verwenden, ist, zu wissen, dass sie existieren. Sobald Sie anfangen, sie in Ihre Routine einzubauen, werden Sie ziemlich schnell merken, wie viel Zeit Sie damit verschwendet haben, Dinge auf dem langen Weg zu erledigen. Stellen Sie nur sicher, dass Sie sie aufschreiben oder diese Seite als Lesezeichen speichern, damit Sie zurückkehren können, wenn Sie sie benötigen.

Verwandte Artikel