Africa Studio - stock.adobe.com
PowerShell-Module, die jeder Admin kennen sollte
Berechtigungen abfragen, installierte Updates kontrollieren oder den WSUS-Server synchronisieren, mit den richtigen PowerShell-Modulen lässt sich vieles automatisieren.
Die PowerShell-Community ist sehr lebendig und viele Entwickler erstellen PowerShell-Module, die bei der täglichen Arbeit in IT-Abteilungen hilfreiche Dienste leisten können. Die Mehrzahl der PowerShell-Module aus der Community befinden sich im zentralen Repository der PowerShell, in der PowerShell Gallery. Aber auch auf GitHub finden sich spannende Module und Skripte. Nachfolgend haben wir exemplarisch einige zusammengestellt.
PSWindowsUpdate – Windows Updates vewalten
Das Verteilen von Windows Updates in Unternehmen funktioniert meist nie ganz ohne Probleme und kann sich beliebig komplex gestalten. Hier kann das PSWindowsUpdate-Modul unter Umständen hilfreich sein. Admins können sich so den Verlauf der Update-Installation anzeigen lassen, ebenso wie noch ausstehende Updates auflisten. Updates können lokal und auch aus der Ferne installiert werden und selbige lassen sich auch deinstallieren.
Eines der besonders nützlichen Cmdlets in dem Modul PSWindowsUpdate ist Get-WULastResults. Dieses ruft das letzte Ergebnis einer Windows-Update-Suche und den Installationsstatus ab.
Das Cmdlet Get-WUInstall installiert Updates und kann dabei nach bestimmten Update-Kategorien und KnowledgeBase-Updates filtern. Im gezeigten Beispiel wird das Updates KB4034658 installiert.
PoshWSUS – Unterstützung für den WSUS-Server
Bei PoshWSUS handelt es ich um ein Modul für die Verwaltung der populären Windows Server Update Services (WSUS). Mit diesem Modul kann man auf dem WSUS-Server installierte Updates suchen, Updates genehmigen oder auch ablehnen sowie die WSUS-Konfiguration ändern.
So gibt es hier eine praktische Möglichkeit, den Umgang mit Vorschau-Updates zu automatisieren. Das gezeigte Beispiel fragt den WSUS-Server nach Updates ab, die die Zeichenkette „Preview of“ enthalten und nicht bereits abgelehnt wurden und leitet diese zur Ablehnung an Deny-PoshWSUSUpdate weiter.
Eine wichtige Aufgabe bei der Verwendung von WSUS ist die Synchronisation von Updates zwischen den Microsoft-Servern und den eigenen internen WSUS-Servern. Dies lässt sich im gezeigten Beispiel mit Cmdlet Start-PoshWSUSSync bewerkstelligen.
Und da die PowerShell es ja einfach ermöglicht, Cmdlets in Skripts zu kombinieren, kann man beispielsweise erst den WSUS synchronisieren und dann bestimmte Updates automatisiert ablehnen.
Carbon – Windows-Aufgaben automatisieren
Carbon gehört zu den besonders populären PowerShell-Modulen – und dies aus gutem Grund. Mit dem Modul lassen sich viele verschiedene Aufgaben erledigen. Das Modul interagiert mit Benutzern, Websites, Zertifikaten und Diensten gleichermaßen und lässt sich für viele Konfigurationsaufgaben unter Windows einsetzen.
Ein interessantes Cmdlet ist Get-CProgrammInstallInfo, das Informationen über installierte Programme liefert. Im gezeigten Beispiel liefert das Cmdlet Informationen über eine lokale Google-Chrome-Installation zurück. Hier sieht man Informationen wie Installationsdatum, den Quellpfad der Installation, die Sprache sowie den Uninstall String. Bei letzterem handelt es sich um die Zeichenfolge beziehungsweise den Befehl, mit dem die Software vom System deinstalliert wird.
Viele Anwendungen setzen ein installiertes .NET-Framework auf dem System voraus. Mit Carbon und dem Cmdlet Test-CDotNet kann man einfach überprüfen, ob Version 2 oder Version 4 des Frameworks installiert ist.
NTFSSecurity – Mit Berechtigungen arbeiten
Bereits die PowerShell unterstützt das Arbeiten mit NTFS-Dateiberechtigungen nativ. Das Modul NTFSSecurity bietet aber einen benutzerfreundlicheren Ansatz.
Es gibt immer gute Gründe für einen Admin, abzufragen, wie die effektiven Berechtigungen eines Benutzers für eine Datei oder einen Ordner aussehen. Diese effektiven Berechtigungen ergeben sich aus der Gruppenzugehörigkeit des Benutzers, vererbten Berechtigungen, verschachtelten Gruppen und abgelehnten Berechtigungen.
Im gezeigten Beispiel gibt das Cmdlet Get-NTFSEffectiveAccess die effektiven Berechtigungen des lokalen Pfades c:\temp aus.
Ebenfalls durchaus üblich ist es, den Besitzer einer Datei oder eines Ordners unter NTFS zu bestimmen. Im Beispiel ist es so, dass der Besitzer des Ordners c:\temp „Dan“ ist. Mit dem Cmdlet Get-NTFSSOwner lässt man sich den aktuellen Besitzer anzeigen.
Es befinden sich mehr als 3.000 Module in der PowerShell Gallery und die Community wird nicht müde, weitere zu veröffentlichen. Bei der Suche nach einer Möglichkeit, Aufgaben zu automatisieren, lohnt sich ein Blick in die Power Gallery allemal.