Peter Gyger online

"Gring ache u seckle" (Quelle: A. Weyermann)

NAVIGATION - SEARCH

Übersicht MS Powershell

 

Um was geht es?

Was mit einer Batchdatei ("Stapeldatei") begann, mit dem "Windows Scripting Host" seine Fortsetzung fand, soll seit Jahren durch die Skriptsprache "Powershell" abgelöst werden. Nachfolgend ein paar Informationen zum Einstieg in Powershell.

Einleitung

Powershell wurde von Microsoft zur strategischen Sprache erhoben. Wenige Produkte haben Sie noch nicht implementiert. Aktuell ist die Version 3.0 erschienen.

   

Windows PowerShell setzt auf dem .NET Framework auf. So wie die bekannten Sprachen C# oder ASP.NET. Sie verwendet das Konzept von Pipes und Filtern mit dem Paradigma der objektorientierten Programmierung (.net). Wie bei den Batchdateien können Befehle einzeln oder zusammengefasst als Skript verwendet werden.

   

Grafische Oberflächen sind eine Konzession an den Anwender. Microsoft hat mit Windows Server 2008R2 diesen Weg zurück zu den Wurzeln beschritten. "Powershell" ist für den Systembetrieb in einer Microsoft IT Umgebung das, was einmal mit "command.com" bzw. "cmd.exe" angefangen hat.

   

Bei den meisten Shells wird ein Befehl (Dienstprogramm) in einem neuen Prozess ausgeführt. Die Resultate werden als Text ausgegeben. Allen bekannten, klassischen Shells wie Bash ist gemeinsam das sie wenige eigene Befehle und Funktionen haben. Daher entstanden im Verlauf der Zeit unterschiedliche Hilfsprogramme, Erweiterungen, etc.

Powershell bricht konsequent mit diesem Modus. Im Detail:  

  • Die Zahl integrierter Befehle ist hoch
  • Alle Befehle haben eine einheitliche Schnittstelle.
  • statt Text werden Objekte verarbeitet

 Jede Sprache die .NET nutzt, verwendet Sonderzeichen. Die wurden so gewählt das sie auf einer US Tastatur leicht zu erzeugen sind. Somit hat man die Wahl, das Layout der Tastatur umzustellen oder diese auf dem verwendeten Tastaturlayout zu identifizieren. "Gross" / "Klein" Schreibweise ist anders als bei C# nichtrelevant. Auf einer Tastatur mit aktivem SG ("Swiss German") Layout sind die Sonderzeichen wie folgt zu finden:

Zeichen

Tasten

Sinn

|

AltGr 7

Ausgabe eines Befehles

`

Shift ^

Befehl auf der folgenden Zeile fortsetzen

{

AltGr ä

Beginn einer Befehlsfolge

}

AltGr $

Ende einer Befehlsfolge

[

AltGr ü

Manchmal bei Objekten erforderlich

]

AltGr !

Manchmal bei Objekten erforderlich

TAB

Tabulator

A la IntelliSense: vervollständigt einen Befehl

 

Hintergrund

Die EXE Datei von PowerShell liegt im Verzeichnis "v1.0". Der Verzeichnisname "v1.0" ist irreführend. Die installierte Version von PowerShell kann mit "get-host" ermittelt werden. Standard ist:

   

Produkt

Version 2

Version 3

Windows 7 – SP1

X

  

Windows 8

  

X

Windows Server 2008 R2

X

  

Windows Server 2012

  

X

   

Die Installation auf dem "Windows Home Server" sollte ebenfalls kein Problem sein:

Der Update auf die Version 3 ist für die Version Windows 7 und Windows Server 2008R2 unproblematisch

   

Interaktiv

   

   

"Get-Help" liefert die ersten Informationen zu den Befehlen. Die Sprache der Information richtet sich nach dem Betriebssystem. "Gross / Kleinschreibung" wird nicht interpretiert.

   

Cmdlets

Die Basis der PowerShell Funktionen bilden die sogenannten "cmdlets". Der Name ist nach dem Schema Verb-Substantiv aufgebaut.

z.B. "get-command". Ein cmdlet kann Parameter oder Objekte als Eingabe verarbeiten. Die Ausgabe ist immer ein Objekt.

   

"Cmdlets" sind spezielle .NET Klassen. D.h. Teil des .NET Frameworks. Nebst den .NET Klassen werden auch COM Objekte sowie WMI Klassen verarbeitet.

   

Parameter beim Aufruf werden mit einem "-" gekennzeichnet. Objekte werden durch einen Leerschlag übergeben. Beispiel:

Hilfetext zum Cmdlets "get-command" abrufen. Für die Hilfe ist das Cmdlets "get-help" zuständig. Diesem muss also mitgeteilt werden, dass lediglich der Hilfetext zu "get-command" angezeigt werden soll.

   

Dazu wird "get-help" das Objekt übergeben:

"get-help get-command"

   

Mit dem Parameter "-online" wird der Hilfetext direkt aus dem Web (MS TechNet) abgerufen:

"get-help –online get-command"

   

Als Alternative zu einer Referenz hat Microsoft in der TechNet einen aufgabenbasierten Leitfaden erstellt. Dieser zeigt in mehreren Artikeln, wie man PowerShell im Alltag einsetzen kann.

   

In der Wikipedia ist eine Liste mit vergleichbaren Befehlen anderer CLI zu finden:

http://de.wikipedia.org/wiki/Powershell#Cmdlets

   

Pipe

Wer sich mit der Unix (Linux, BSD, etc.) Welt auseinandersetzt, wird das Prinzip von "Pipes und Filtern" zwangsläufig kennenlernen. Diese Wikipedia Artikel erklären die Funktionsweise:

http://de.wikipedia.org/wiki/Pipe_(Informatik)

http://de.wikipedia.org/wiki/Filter_(Unix)

http://de.wikipedia.org/wiki/Pipes_und_Filter

   

. Z.B. kann die Liste die "get-command" liefert an das Cmdlets "format-list" übergeben werden:

"get-command | format-list"

   

Die Ausgabe kann auch sortiert erfolgen:

"get-command | sort-order"

   

Über ein weiteres Pipe kann die bearbeitete Liste in eine Datei gespeichert werden:

"get-command | format-list | out-file H:\projekt\ps\workdir\bsp-1c.txt

   

Programme

Grundsätzlich lässt sich jedes Programm bzw. Funktion starten. Analog zu "Cmd". Natürlich gibt es ein paar Feinheiten.

Wie bei CMD können nur Programme gefunden, werden, deren Pfad in der Variable "path" aufgeführt ist.

   

Filezilla kann in der CMD Shell direkt ausgeführt werden: ""C:\Program Files (x86)\FileZilla FTP Client\filezilla.exe""

PowerShell benötigt mehr Angaben. Die Eingabe des Pfades mit Anführungs und Schlusszeichen wird als Text interpretiert und ausgegeben. Ohne die "" liefert PowerShell einen Fehler zurück: Programm nicht gefunden. Mit der Verwendung des Befehles "Start" klappt es:

start "C:\Program Files (x86)\FileZilla FTP Client\filezilla.exe"

   

Anstatt "Start" kann das Cmdlet "Invoke-Item" verwendet werden:

invoke-item "C:\Program Files (x86)\FileZilla FTP Client\filezilla.exe"

   

Dokumente deren Erweiterung ("Suffix") einem installierten Programm zugeordnet ist, werden geöffnet. Jedoch muss die Pfadangabe absolut sein. D.h. eine Datei gps.pdf wird nicht gefunden. Auch nicht, wenn die Datei im gleichen Verzeichnis ist. Als Beispiel eines absoluten Pfades:
H:\projekt\ps\workdir\bsp-1c.txt

   

Beispiele

In der Microsoft TechNet hat es folgende Beispiele für die Verwendung von PowerShell

Dateien und Ordner

Datumswerte und Uhrzeiten

Systemverwaltungsaufgaben

Speichern und Importieren von Daten

   

Scripting

Ein Skript ist eine Textdatei mit Befehlen. Die Skriptdatei muss mit der Erweiterung ".ps1" gespeichert werden. Analog einer Batchdatei, welche mit der Erweiterung "CMD" (bzw. .bat) gespeichert wird.

   

Mit dem Cmdlet "Get-ExecutionPolicy" erfährt man, ob eine Restriktion die Ausführung sperrt.

   

Mit folgenden Zeilen werden die Farben der PowerShell Konsole geändert. Mit einem abschliessenden "Cls" wird der Wechsel sichtbar.

   

$a = (Get-Host).UI.RawUI

$a.BackgroundColor = "red"

$a.ForegroundColor = "black"

   

Wenn man diese Zeilen kopiert und in PowerShell einfügt, werden sie umgehend abgearbeitet. Nach einem CLS sieht man den roten Hintergrund.

Mit dem Neustart der Konsole ist die Orginal Farbgebung wieder hergestellt.

   

Wenn diese Zeilen in eine Textdatei mit der Erweiterung .PS1 (z.B. test1.ps1) kopiert werden, kann diese in der PowerShell ausgeführt werden. Natürlich mit absoluter Pfadangabe, bzw. wenn es ich lokalen Verzeichnis ist mit ".\".

   

Im Windows Explorer besteht die Möglichkeit über das Kontextmenu ein Power Shell Skript auszuführen.

   

"Öffnen" öffnet das Script mit Power Shell ISE. Dem mitgelieferten Editor zu Power Shell.

   

Mehr zum Thema wie man ein Power Shell Script startet, findet man hier.

   

   

Für das erstellen bzw. bearbeiten eines Skriptes ist die Version ISE gedacht

   

Sie bietet einfach Editorfunktionen, um das erstellen von Skripten zu erleichtern. Die Hilfe im Editor (in der Sprache des Betriebssystems) erklärt die Feinheiten.

Weiterführende Links

Microsoft PowerShell Homepage (de)

MSDN PowerShell Blog

Windows PowerShell Shortcut Keys

Windows PowerShell 3.0 and Server Manager Quick Reference Guides

2007 hat Frank Koch von Microsoft Schweiz diese Einführung in die Version 1 geschrieben

Der gleiche Autor hat 2008 einen Workshop zur Serververwaltung geschrieben

   

Andere Websites / Blogs zum Thema Powershell

Swiss IT Pro User Group

Blog Desmond Lee

powershellpraxis.de

powershell-ag.de

PowerShell 2 – Artikel in der Computerworld.ch

Power Shell Magazine (YouTube)

Channel 9: Windows PowerShell Crash Course

Channel 9: Group Windows PowerShell

Markus Widl Cheat Sheet (de)

Bruce Payette: Quick Reference Card (Ver 2)

 

Fazit

PowerShell ist der neuen Version 3 hat gerade im Remoting interessante Neuerungen erfahren. Daher bin ich gespannt, auf den Kurs mit Desmond Lee, der nächste Woche startet.

 

 

ELEMENT

Wert

Erstellt

23.1.2015

Letzte Änderung

 

ID

 

Kategorie

Microsoft

Tag

 

Autor

 

 

        

Add comment

  Country flag

biuquote
  • Comment
  • Preview
Loading