2098330

Skripte in der PowerShell: Ein Einsteigerguide

29.11.2015 | 14:16 Uhr |

Die PowerShell ist ein ein effizientes Werkzeug zur Systemverwaltung. Mit selbst geschriebenen oder vorgefertigten Skripten. Wir geben einen Überblick.

Die PowerShell bietet für immer mehr Unternehmen ein effizientes Werkzeug zur Systemverwaltung. Neben der Möglichkeit schnell und einfach die verschiedenen Serverdienste mit den CMDlets zu verwalten, können Administratoren auch selbst Skripte schreiben oder vorgefertigte Skripte weiter verwenden und erweitern. Diese Skripte lassen sich entweder manuell ausführen, als Aufgabe hinterlegen oder auch als Anmeldeskripte für Benutzer in Active Directory verwenden.

Gratis-Skripte von Microsoft

Microsoft stellt für Administratoren, die sich mit Skripten auseinandersetzen wollen, eine Sammelstelle für Skripte und Informationen zur Verfügung. Die Skripte im Microsoft Script Center stehen kostenlos bereit.
Notwendige Tools und Vorgehensweisen zum Skripten mit der PowerShell

Der einfachste Weg ein Skript zu schreiben ist es, wenn Sie die Befehle in einer Datei hintereinander auflisten. Sie können dazu herkömmliche Texteditoren verwenden, erweiterte Editoren wie NotePad++ , oder die PowerShell Integrated Scripted Engine (ISE).

Skripte erstellen Sie am einfachsten mit dem Bordmitteltool PowerShell ISE
Vergrößern Skripte erstellen Sie am einfachsten mit dem Bordmitteltool PowerShell ISE

Die ISE gehört zum Installationsumfang der PowerShell. Die PowerShell rufen Sie über deren Verknüpfung auf, oder durch Eintippen von powershell ise . Die grafische Oberfläche bietet die Möglichkeit, Skripte für die Windows PowerShell in einer einheitlichen zentralen Oberfläche zu erstellen. In einer PowerShell-Sitzung starten Sie die grafische Oberfläche furch Eingabe von ise .

Darüber hinaus können Sie auch erweiterte Tools wie PowerGUI von Dell http://software.dell.com/products/powergui-freeware/ verwenden.

Skripte erhalten die Endung *.PS1. Um diese auszuführen, wechseln Sie in das Verzeichnis, in dem Sie das Skript gespeichert haben. Die Ausführung erfolgt immer mit der Syntax:

.\<Name des Skriptes>.ps1

Sicherheitseinstellungen für Skripte beachten

Zum Schutz enthält die PowerShell verschiedene Sicherheitsfeatures, zu denen auch die Ausführungsrichtlinie für Skripte zählt. Die Ausführungsrichtlinie legt fest, ob Skripte ausgeführt werden dürfen, ob diese digital signiert sein müssen, oder ob Skripte generell erlaubt sein sollen. Standardmäßig erlaubt die PowerShell nur signierte Skripts. Wollen Sie eigene Skripts schreiben, müssen Sie diese digital signieren, oder für die Ausführung die Richtlinie beenden. Für erste Schritte mit Skripten ist das der beste Weg.

Sie können die Ausführungsrichtlinie mit dem Cmdlet Set-ExecutionPolicy ändern und mit Get-ExecutionPolicy anzeigen. Sie können folgende Einstellungen vornehmen:

Restricted -- Keine Skripte erlaubt. Diese Option ist sicher, aber Sie können dann natürlich nicht mit Skripten arbeiten.
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 Skripte. Die Einstellung ist optimal für eigene Tests mit Anmeldeskripten.

Nach der Eingabe von Set-ExecutionPolicy Unrestricted müssen Sie die Ausführung noch bestätigen. Anschließend funktionieren eigene Skripts. Nach den Tests können Sie die Einstellung wieder ändern.

Die Ausführungsrichtlinie der PowerShell müssen Sie vor dem Ausführen von Skripten anpassen
Vergrößern Die Ausführungsrichtlinie der PowerShell müssen Sie vor dem Ausführen von Skripten anpassen

Skripten mit der PowerShell

Im oberen Bereich der PowerShell ISE geben Sie Skriptbefehle an. Sie können mit der ISE das Skript auch speichern. Geben Sie im oberen Bereich Befehle ein, werden diese nicht sofort ausgeführt, sondern nur aufgelistet. Sind Sie fertig mit der Eingabe der Befehle, können Sie deren Ausführung starten, indem Sie auf das grüne Abspielsymbol mit der QuickInfo „Skript ausführen“ klicken.

Über den Menüpunkt Ansicht können Sie die verschiedenen Bereiche des ISE anpassen. So lässt sich zum Beispiel der Bereich zum Erstellen von Skripten an der rechten Seite anordnen. Skripte können Sie während der Ausführung bearbeiten und Fehler beheben. Laden Sie ein Skript über Datei/Öffnen , sehen Sie im Befehlsfenster dessen Bestandteile. Markieren Sie eine Zeile im Skript, können Sie über den Menüpunkt Debuggen/Haltepunkt umschalten eine Pause im Skript festlegen.

Pipelines mit der PowerShell nutzen

Eine wichtige Funktion der PowerShell ist die Pipeline-Funktion. Diese erlaubt das Auslesen und verwenden eines CMDlets und die Übergabe des Ergebnisses in ein anderes CMDlet. In Skripten ist diese Verwendung besonders wichtig. Dazu rufen Sie zum Beispiel erst mit get-vm eine Liste der virtuellen Server auf einem Hyper-V Host ab und lassen sich dann die Speicherorte der virtuellen Festplatten dieser Server anzeigen, zum Beispiel mit:

get-vm | Get-VMHardDiskDrive |fl VMName, Path

Wie Sie am Befehl sehen, können Sie auch mit mehreren Pipelines (|) arbeiten und die Ausgabe auch noch mit |fl oder |ft filtern lassen. Alternativ verwenden Sie den Befehl Get-VMHardDiskDrive (Get-VM) . Sie können diese Befehle aber auch in Kombination mit Get- und Set-CMDlets verwenden. Ein Beispiel dafür ist das Zuweisen von Exchange-ActiveSync-Richtlinien in der PowerShell.

Um eine Richtlinie allen Anwendern zuzuweisen, verwenden Sie den Befehl

Get-Mailbox | Set-CASMailbox -ActiveSyncMailboxPolicy(Get-ActiveSyncMailboxPolicy <Name der Richtlinie>).Identity

Anmeldeskripte in der PowerShell

Um PowerShell-Anmeldeskripte zu verwenden, sollten Sie die PowerShell-Skripts über Gruppenrichtlinien anwenden lassen. Die Skripts werden in den Gruppenrichtlinien an folgender Stelle hinterlegt:
* Skripte für Computer zum Starten und Herunterfahren unter Computerkonfiguration/Richtlinien/Windows-Einstellungen/Skripts
* Skripte für Anwender beim An- oder Abmelden unter Benutzerkonfiguration/Richtlinien/Windows-Einstellungen/Skripts

Skripte für Anwender hinterlegen Sie auch in Gruppenrichtlinien
Vergrößern Skripte für Anwender hinterlegen Sie auch in Gruppenrichtlinien

Skripte als Aufgaben hinterlegen

Erstellen Sie eine neue geplante Aufgabe in Windows, können Sie Skripte auch als Option hinterlegen. Dazu müssen Sie die PowerShell als ausführende Datei hinterlegen. Als Aktion legen Sie bei Programm/Skript den Befehl powershell.exe fest. Bei Argumente hinzufügen tragen Sie dann die folgende Zeile ein:

-Command „&`<Pfad in dem sich das Skript befindet>\<New-ExchangeReporter.ps1` -installpath `<Pfad in dem sich das Skript befindet>`

In Aufgaben können Sie auch PowerShell-Skripte ausführen lassen
Vergrößern In Aufgaben können Sie auch PowerShell-Skripte ausführen lassen

Variablen verwenden

Durch die Möglichkeit, die Ausgabe eines CMDlets in einer Variablen zu speichern, und anschließend das Ergebnis an ein weiteres CMDlet weiterzugeben, können Sie sehr einfach verschachtelte Befehle in Skripten zusammenfassen, ohne dass die Ausführung zu kompliziert wird.

Wollen Sie zum Beispiel das aktuelle Datum als Variable $heute speichern, können Sie in der Shell den Befehl $ heute = Get-Date eingeben. Geben Sie in der Shell $heute ein, wird das aktuelle Datum ausgegeben. Variablen definieren Sie immer nach der Syntax:
$<Text>=<Wert oder Ausgabe eines CMDlets>

Sie können auch Anmeldedaten in Variablen speichern:

$cred = Get-Credential

Auf Basis dieser Anmeldedaten können Sie zum Beispiel eine PowerShell-Sitzung erstellen, die eine Verbindung zu Office 365 und zur Exchange-Verwaltungshell aufbaut:

$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell -Credential $cred -Authentication Basic -AllowRedirection

Haben Sie diese Daten in der Variable gespeichert, importieren Sie diese mit:

import-PSSession $Session

Neben den Standardmöglichkeiten und -Befehlen der PowerShell, bietet Microsoft auch Erweiterungen und zusätzliche Befehle an, die sich in eigene Skripte integrieren lassen, oder mit denen Sie selbst Skripte erstellen können. Ein Beispiel dafür ist das „Windows Update PowerShell Module“. Mit diesem installieren und verwalten Sie Windows-Updates in der PowerShell. Das Windows Update PowerShell Module http://gallery.technet.microsoft.com/scriptcenter/2d191bcd-3308-4edd-9de2-88dff796b0bc kann anzeigen, welche Aktualisierungen zur Verfügung stehen und verschiedene Skripte herunterladen, mit denen Sie Updateaufgaben durchführen können. Mit den Befehlen können Sie auch den Installationsstatus der Updates anzeigen. Auf der Downloadseite finden Sie einige Beispiele für den Umgang mit dem Skript.

Der Vorteil des Moduls besteht auch darin, dass Sie nicht nur den lokalen Server oder die lokale Arbeitsstation verwalten können, sondern auch Rechner im Netzwerk. Dazu verwenden Sie bei den einzelnen CMDlets einfach noch die Option -Computername . Es besteht auch die Möglichkeit Aktualisierungen in einer Variablen zu speichern und die Patches automatisiert installieren lassen. Sinnvoll ist das zum Beispiel, wenn zur Sicherheit bestimmte Patches von Microsoft Knowledge-Base-Artikeln installiert werden sollen. Die Befehle sehen dann so aus:

$KBList = "KB890830","KB2533552","KB2539636"
Get-WUInstall -Type "Software" -KBArticleID $KBList -AcceptAll

Um Patches remote zu verwalten oder abzufragen, verwenden Sie als Beispiel die folgenden Befehle. Suchen Sie nach bestimmten Updates, speichern Sie diese zunächst in einer Variablen:

$Updates = "40336e0a-7b9b-45a0-89e9-9bd3ce0c3137","61bfe3ec-a1dc-4eab-9481-0d8fd7319ae8","0c737c40-b687-45bc-8deb-83db8209b258"

Danach überprüfen Sie mit einem weiteren Befehl, ob die Updates auf einem Server im Netzwerk installiert sind:
  Get-WUList -MicrosoftUpdate -IsInstalled -Type "Software" -CategoryIDs "E6CF1350-C01B-414D-A61F-263D14D133B4" -UpdateID $UpdateIDs -RevisionNumber 101 -ComputerName G1 -Verbose

Variablen lassen sich in der PowerShell auch zum Steuern von Updates nutzen
Vergrößern Variablen lassen sich in der PowerShell auch zum Steuern von Updates nutzen

 
 
 

0 Kommentare zu diesem Artikel
2098330