Aus der TechNet-Gallery

Die besten PowerShell-Skripte in der Praxis

16.03.2016 von Thomas Joos
Die PowerShell ist zweifelsohne eines der wichtigsten Windows-Werkzeuge. Wir stellen die besten Microsoft-Skripte und deren praktischen Nutzen vor.

Microsoft bietet über seine TechNet Gallery verschiedene Anleitungen und Zusatz-Tools, aber auch PowerShell-Skripts, die die Arbeit von fortgeschrittenen Anwendern, System-Profis und Administratoren in vielen Bereichen erleichtern. Wir haben für Sie die besten Skripte aus der TechNet-Gallery herausgesucht und stellen diese im praktischen Einsatz vor.

Produktschlüssel aus der PowerShell auslesen

Es gibt einige Tools im Internet, mit denen Sie den Produktschlüssel von Windows-Rechnern auslesen können. Ein bekanntes Beispiel dafür ist Produkey von Nirsoft.

In vielen Unternehmen ist es oft notwendig, den Schlüssel über Skripte auslesen zu lassen, zum Beispiel um die Verteilung bestimmter Produktschlüssel zu überprüfen. Hierzu können Sie auch ein PowerShell-Skript verwenden, das den Produktschlüssel von Windows auslesen kann. Dazu verwenden Sie das Skript Get-ProductKey. Das Tool hat gleichzeitig den Vorteil, dass Sie Daten von mehreren Computern im Netzwerk auslesen können, zum Beispiel mit:

Get-ProductKey -Computername pc1, pc2, pc3

Bildergalerie:
TechNet Gallery
In der TechNet Gallery finden Sie zahlreiche hilfreiche Skripte für unterschiedlichste Problemstellungen.
Produkey
Mit Zusatztools können Sie die Seriennummern/Produktschlüssel von Windows und Office auslesen.
Windows Update PowerShell Module
In der PowerShell können Sie auch den Status von Windows-Updates überprüfen und Installationen starten.
Create Active Directory Users Based on Excel Input
Über die PowerShell legen Sie auch Active Directory-Benutzerkonten mit Daten aus Excel-Tabellen an.
Active Directory User Creation tool
Mit dem Active Directory User Creation tool 1.2 erstellen Sie Benutzer über PowerShell und grafischer Oberfläche.
PowerShell
In der PowerShell können Sie sich eine Liste aller verfügbaren Module anzeigen lassen
PowerShell
In der PowerShell können Sie auch Berechtigungen von Dateien und Verzeichnissen steuern.
PowerShell
Mit einem PowerShell-Skript extrahieren Sie aus einer ISO-Datei mit Windows Server 2012 R2 eine VHDX-Datei als Testumgebung.

Updates über die PowerShell verwalten -Windows Update PowerShell Module

Mit dem Windows Update PowerShell Module können Sie verschiedene Aufgaben zur Verwaltung der Patches in der PowerShell durchführen und skripten. Sie können anzeigen, welche Aktualisierungen für den Computer zur Verfügung stehen, und verschiedene Skripte herunterladen, mit denen Sie Update-Aufgaben durchführen können. Mit den Skripten installieren Sie nicht nur Patches, sondern rufen auch den Installationsstatus ab oder kontrollieren, ob der Computer neu gestartet werden muss. Auf der Seite des Entwicklers finden Sie viele Beispiele für den Umgang mit den einzelnen CMDlets.

Wollen Sie zum Beispiel alle Updates anzeigen, die Sie auf dem Computer aus Microsoft-Update installieren können und für die keine Benutzereingabe notwendig ist, verwenden Sie den Befehl:

Get-WUInstall -MicrosoftUpdate -IgnoreUserInput -WhatIf -Verbose

Um sich die Liste der zuletzt installierten Updates anzeigen zu lassen, verwenden Sie nach der Installation des Moduls das CMDlet Get-WUHistory. Eine Liste der zu installierenden Patches erhalten Sie mit Get-WUList.

Wollen Sie aus der Liste der Updates bestimmte Bereiche von einer Quelle herauslesen und installieren lassen, zum Beispiel alle Updates für das .NET Framework 4, verwenden Sie:

Get-WUInstall -ServiceID 9482f4b4-e343-43b6-b170-9a65bc822c77 -Title ".NET Framework 4" -AcceptAll

Sie können aber auch Aktualisierungen von bestimmten Knowledgebase-Artikeln in eine Variable speichern und die Patches danach automatisiert installieren lassen:

$KBList = "KB890830","KB2533552","KB2539636"

Get-WUInstall -Type "Software" -KBArticleID $KBList -AcceptAll

Natürlich haben Sie auch die Möglichkeit, direkt Patches mit entsprechender Knowedgebase-ID herunterzuladen, ohne diese zu installieren:

Get-WUList -DownloadOnly -KBArticleID KB2959626

Diese und noch mehr Beispiele finden Sie auch auf der Download-Seite des Entwicklers. Mit der Option -Computername können Sie die Befehle zudem über das Netzwerk verwenden.

PowerShell-Skripte fürs Active Directory

Administratoren, die Aufgaben für Active Directory in der PowerShell automatisieren wollen, finden in der TechNet Gallery ebenfalls einige interessante Skripte. Sie können zum Beispiel über die PowerShell neue Benutzerkonten in Active Directory anlegen lassen und die entsprechenden Daten dazu aus einer Excel-Tabelle auslesen. Neue Benutzer anlegen funktioniert auch mit dem Modul Active Directory Module für die PowerShell. Dieses gehört zu den Standardverwaltungs-Tools, wenn Sie Active Directory auf einem Server installieren. Das Modul ist zudem Bestandteil der Remoteserver-Verwaltungs-Tools auf Servern oder auf Arbeitsstationen mit Windows 7/8.1.

Praktisch: Über die PowerShell legen Sie auch Active-Directory-Benutzerkonten mit Daten aus Excel-Tabellen an.

Das Standardmodul für die Verwaltung von Active Directory in der PowerShell kann allerdings keine Daten aus Excel auslesen, um Benutzer gleich mit den richtigen Daten in der korrekten Organisationseinheit oder Domäne anzulegen. Über die TechNet Gallery ist das aber ohne Weiteres möglich.

Dazu verwenden Sie das Modul Create Active Directory Users Based on Excel Input. Der Download besteht aus einer CSV-Datei mit Beispielen sowie einem PowerShell-Skript, das Daten aus der Excel-Tabelle ausliest und die Benutzer anlegt. Geübte PowerShell-Entwickler können die Skriptdatei noch an eigene Wünsche anpassen.

Anlage: Mit dem Active Directory User Creation Tool 1.2 erstellen Sie Benutzer über PowerShell und grafischer Oberfläche.

Ein ebenfalls beliebtes Tool in diesem Bereich ist Arposh New User Creation (ANUC), auch unter dem Namen Active Directory User Creation Tool bekannt. Das Tool ist allerdings nicht nur für das Erstellen von Benutzerkonten in der PowerShell sinnvoll, sondern bietet auch eine grafische Oberfläche.

Grundlage des Tools ist eine XML-Steuerungsdatei. Diese wird beim ersten Start erstellt und muss von Ihnen konfiguriert werden. Beim nächsten Start liest das Tool die Daten aus seiner XML-Datei ein und stellt eine grafische Oberfläche zur Verfügung. Auch mit Active Directory User Creation Tool können Sie Benutzer über eine CSV-Datei in Active Directory anlegen.

Wollen Sie das genaue letzte Anmeldedatum eines Benutzerkontos auslesen, können Sie ebenfalls die PowerShell verwenden. Laden Sie sich dazu das Skript Get Active Directory User Last Logon herunter. Damit Sie das Skript nutzen können, müssen Sie auch hier die Remoteserver-Verwaltungs-Tools für Active Directory installiert haben.

Datenbanken und Tabellen besser mit der PowerShell durchsuchen

Mit der SQL-PowerShell-Abfrage Search for a string in all tables of SQL Server Database können Sie in einer beliebigen Anzahl von Tabellen nach einem bestimmten String suchen lassen. Bei der Abfrage handelt es sich im Grunde genommen um eine einfache Stored Procedure. Sie können die einzelnen Tabelle als Variable hinterlegen oder kommagetrennt in der Liste aufnehmen. Sie können das Skript auch für die aktuellen Versionen SQL Server 2012 SP1/2014 verwenden.

Datei-/Ordner-Berechtigungen in der PowerShell steuern und Ordner aufräumen

Viele Administratoren suchen auch Möglichkeiten, Berechtigungen für Dateien oder Verzeichnisse in der PowerShell zu steuern. Hierfür steht das File System Security PowerShell Module () zur Verfügung. Mit diesem Zusatzmodul können Sie Rechte von Verzeichnissen in der PowerShell steuern.

Das Modul laden Sie als ZIP-Datei herunter und entpacken es. Stellen Sie sicher, dass alle Dateien des Moduls direkt im Stammverzeichnis NTFSSecurity gespeichert sind. Kopieren Sie dieses in das Verzeichnis C:\Users\<Benutzername>\Documents\WindowsPowerShell\Modules oder für den kompletten Rechner in C:\Windows\system32\WindowsPowerShell\v1.0\Modules. Wenn Sie die PowerShell starten, können Sie mit dem Befehl Get-Module -ListAvailable alle auf dem Rechner verfügbaren Module für die PowerShell anzeigen lassen. Hier muss auch das neue Modul erscheinen.

Mit dem Befehl

Get-Module -ListAvailable *ntf*

lassen Sie sich nur das neu installierte Modul anzeigen. Um das Modul zur Verfügung zu stellen, verwenden Sie den Befehl import-module ntfssecurity. Alle CMDlets des Moduls lassen Sie sich mit get-command -module "ntfssecurity" anzeigen. Sämtliche CMDlets sind dokumentiert. Sie können sich also die Hilfe mit dem Standard-CMDlet get-help anzeigen lassen. Verwenden Sie noch die Option -examples, zeigen Sie Beispiele für die CMDlets an.

Basisarbeit: In der PowerShell können Sie auch Berechtigungen von Dateien und Verzeichnissen steuern.

Neben diesen Funktionen haben Sie auch die Möglichkeit, für Ordnung in den Verzeichnissen zu sorgen, indem Sie die PowerShell und Skripte verwenden. Das Tool Delete files older than x-days - Cleanup Script kann Dateien in der Verzeichnissen löschen, die ein bestimmtes Lebensalter überschritten haben. Das ist zum Beispiel für temporäre Verzeichnisse für den Datenaustausch sinnvoll. Wenn Sie das Skript nicht immer manuell ausführen lassen wollen, haben Sie auch die Möglichkeit, eine Aufgabe zu erstellen und das Skript regelmäßig zu starten. Ein Beispiel dafür ist:

.\deleteold.ps1 -FolderPath C:\Folder -FileAge 60 -LogFile H:\log.log -IncludePath .*images.* -RegExPath

Aus WIM-Dateien virtuelle Festplatten erstellen: Convert-WindowsImage.ps1 - WIM2VHD for Windows 8.1

Mit dem PowerShell-Skript Convert-WindowsImage.ps1 erstellen Sie eine Sysprep-vorbereitete VHDX-Datei für Rechner mit Windows 8/8.1. Das Skript spielt daher vor allem bei der Migration zu Windows 8.1 eine wichtige Rolle. Sie können es aber auch für Windows 7, Windows Server 2008 R2/2012 und Windows Server 2012 R2 verwenden.

Zum Ausprobieren: Mit einem PowerShell-Skript extrahieren Sie aus einer ISO-Datei mit Windows Server 2012 R2 eine VHDX-Datei als Testumgebung.

Haben Sie das Skript heruntergeladen, wechseln Sie in das Verzeichnis und geben den Befehl

.\Convert-WindowsImage.ps1 -ShowUI

ein. Anschließend startet die grafische Oberfläche des Tools. Hier müssen Sie folgende Daten eingeben:

Choose a Source - Hier wählen Sie die ISO-Datei aus.

Choose a SKU from the list - Hier wählen Sie die Edition aus.

Choose configuration options - Hier steuern Sie die Optionen der virtuellen Festplatten die Umgebung. Verwenden Sie bei VHD Format die Option VHDX, bei VHD Type die Option Dynamic und legen Sie die Größe der virtuellen Festplatten fest. Achten Sie aber darauf, dass der Speicherplatz ausreicht.

• Klicken Sie danach auf Make my VHD. Das Tool erstellt jetzt die VHDX-Datei, die als Basis für die Testumgebung gilt.

Exchange-Berichte aus der PowerShell auslesen

In der PowerShell können Sie auch Informationen für Ihre Exchange-Umgebung auslesen lassen. Dazu steht das Skript Generate Exchange Environment Reports using Powershell in der TechNet Gallery zur Verfügung.

Standardmäßig wird das Skript allerdings geblockt. In der PowerShell 4.0 von Windows Server 2012 R2 ist die sogenannte Ausführungsrichtlinie für Skripte standardmäßig auf RemoteSigned gesetzt. Die Ausführungsrichtlinie bestimmt, ob Skripts ausgeführt werden dürfen und ob diese digital signiert sein müssen. Standardmäßig blockiert die PowerShell Skripts in der PowerShell 3.0 von Windows Server 2012. In 4.0 sind die Skripte generell erlaubt, zumindest wenn sie signiert sind. Sie können die Ausführungsrichtlinie mit dem Cmdlet Set-ExecutionPolicy ändern und mit Get-ExecutionPolicy anzeigen. Dabei stehen folgende Einstellungen zur Verfügung:

Restricted - Standardeinstellung. Keine Skripts erlaubt.

AllSigned - Nur signierte Skripts sind erlaubt.

RemoteSigned - Bei dieser Einstellung müssen Sie Skripts durch eine Zertifizierungsstelle signieren lassen.

Unrestricted - Mit dieser Einstellung funktionieren alle Skripts.

Mehr zum Skript erfahren Sie auch auf der Seite des Entwicklers. Die Syntax für die Ausführung ist:

.\Get-ExchangeEnvironmentReport -HTMLReport c:\report.html

Sie können den Bericht auch direkt aus der PowerShell heraus als E-Mail versenden lassen:

.\Get-ExchangeEnvironmentReport -HTMLReport c:\report.html -SendMail:$true -MailFrom:<Absende-Adresse> -MailTo:<Empfänger-Adresse> -MailServer:<SMTP-Server>

Auf der TechNet Gallery werden regelmäßig neue Angebote hinzugefügt. Es kann sich daher lohnen, von Zeit zu Zeit nach neuen Skripten zu stöbern. (mje)