- Windows PowerShell
-
Windows PowerShell
Screenshot von PowerShell 1.0Basisdaten Entwickler Microsoft Aktuelle Version 2.0
(26. Oktober 2009)Betriebssystem Windows XP (1.0 und 2.0)
Windows Server 2003 (1.0 und 2.0)
Windows Vista (2.0)
Windows Server 2008 (1.0 und 2.0)
Windows Server 2008 R2 (2.0)
Windows 7 (2.0)Kategorie Betriebssystem-Shell Lizenz MS-EULA Deutschsprachig ja Windows PowerShell Die Windows PowerShell (powershell.exe), zeitweise auch bekannt unter den Codenamen Monad und Microsoft Command Shell (MSH), ist eine von Microsoft entwickelte Alternative zum Windows-Kommandozeilenprogramm cmd.exe und zum Windows Script Host.
Inhaltsverzeichnis
Zweck und Eigenschaften
Die auf dem .NET-Framework in der Version 2.0 basierende Windows PowerShell verbindet die aus Unix-Shells bekannte Philosophie von Pipes und Filtern mit dem Paradigma der objektorientierten Programmierung. Der Benutzer kann wie bisher einfache Befehle an einer Kommandozeile ausführen und miteinander verknüpfen oder aber auch komplexe Skript-Programme mit der eigens dafür entwickelten PowerShell Scripting Language schreiben.
Ursprünglich war die erste Veröffentlichung der PowerShell als Bestandteil von Windows Vista am 30. November 2006 geplant. Sie wurde aber nur mit dem gleichzeitig veröffentlichten Microsoft Exchange Server 2007 ausgeliefert. Auf allen nachfolgenden PC-Betriebssystemen von Microsoft ist die PowerShell bereits vorinstalliert.
Versionen 1.0 und 2.0[1] werden auch für die Betriebssysteme Windows XP, Windows Server 2003 und Windows Vista zum kostenlosen Herunterladen angeboten.
Ab Windows 7 wird die PowerShell in der Version 2.0 vorinstalliert. Sie enthält unter anderem die grafische Entwicklungsumgebung PowerShell ISE (Integrated Scripting Environment). Sie unterstützt das Autovervollständigen von Befehlen, farbliche Syntaxkennzeichnungen und enthält einen Script-Debugger.
Windows 8 wird mit der Version 3.0 der PowerShell geliefert. Als wesentliche Neuerungen bringt sie die Unterstützung für Workflows auf Basis der Windows Workflow Foundation, Remote-Sessions, die unterbrochen und später auch von einem anderen PC aus wiederaufgenommen werden können, sowie die Möglichkeit, Scripts zeitgesteuert oder abhängig von Ereignissen auszuführen. PowerShell 3.0 wird als Teil des Windows Management Framework 3.0 auch für Windows 7 SP1 und Windows Server 2008 R2 SP1 verfügbar sein, für XP und Vista jedoch nicht. Das Management Framework 3.0 liegt derzeit als Community Technology Preview vor.
Details
Den Kern der PowerShell bilden kleine Funktionseinheiten, genannt Cmdlets (gesprochen command-lets), die dem Benennungsschema Verb-Substantiv folgen, also beispielsweise
Get-Help
oderSet-Location
, wobei die Groß-/Kleinschreibung keine Rolle spielt. Da die Bezeichnungen einiger Cmdlets relativ lang sind, können kürzere Alias-Namen vergeben werden, von denen bereits einige standardmäßig vordefiniert sind, unter anderem als Hilfe für Umsteiger von Unix-Shells oder der DOS/NT-Kommandozeile (beispielsweisels
,dir
,cp
, …).Die Cmdlets sind als spezielle .NET-Klassen implementiert, welche als Eingabe bestimmte Parameter (gekennzeichnet durch ein vorangestelltes „
-
“) und Objekte annehmen und als Ausgabe wiederum Objekte zurückliefern, die dann beispielsweise als Tabelle formatiert ausgegeben oder zur weiteren Verarbeitung an andere Cmdlets weitergeleitet werden können. Da die Ausgabe nicht als Textstrom erfolgt, sondern als strukturiertes Objekt, lassen sich bestimmte Eigenschaften leicht ohne aufwändige Textanalyse selektieren und manipulieren. Analysen über Reguläre Ausdrücke sind jedoch ebenfalls möglich. Zurückgelieferte Objekte können auch in Variablen gespeichert und an anderer Stelle wiederverwendet werden.Die Funktionalität der PowerShell lässt sich durch sogenannte Snap-Ins erweitern, welche auf einen Schlag ganze Sätze von Cmdlets importieren und dem Benutzer zur Verfügung stellen. Mittels
Get-Help
werden Hilfeseiten zu Cmdlets angezeigt, die dem Format von Unix-Manpages ähnlich sind. Falls Cmdlets mit dem speziellen Parameter „-whatif
“ aufgerufen werden, wird der Benutzer darüber informiert, was passiert wäre, eine Aktion findet jedoch nicht statt.Neben den Cmdlets lassen sich direkt von der Kommandozeile auch herkömmliche Programme, selbstdefinierte Funktionen, Skripte und Batch-Dateien starten, ebenso Dokumente, die beim Aufrufen mit dem dazugehörigen Anwendungsprogramm geöffnet werden.
Die PowerShell erlaubt Zugriff auf WMI-Klassen, COM-Objekte sowie auf das gesamte .NET-Framework.
Über sogenannte Provider können hierarchische Strukturen wie die Windows-Registrierungsdatenbank, der Variablen-Namensraum und andere als virtuelle Laufwerke eingebunden und wie ein Dateisystem navigiert, referenziert und bearbeitet werden, zum Beispiel „
Env:
“, „HKLM:
“, „Variable:
“ oder „Function:
“. Diese werden jedoch nicht im Windows-Explorer angezeigt.Für den interaktiven Betrieb bietet die PowerShell eine automatische Befehlszeilenergänzung per Tabulatortaste für Cmdlets, Parameter, Eigenschaften sowie Datei- und Verzeichnisnamen, die bei Bedarf vom Benutzer an seine eigenen Bedürfnisse angepasst werden kann.
Anders als bei bisher existierenden objektorientierten Skript-Interpretern (BeanShell, Smalltalk, Python Shell) ist die Syntax der PowerShell-Skriptsprache, welche sich unter anderem Anleihen bei Perl, Unix-Shells, SQL und C# nimmt, darauf ausgelegt, auch für den täglichen interaktiven Gebrauch als Shell für administrative Aufgaben wie etwa Dateiverwaltung geeignet zu sein.
Cmdlets
Die folgende Tabelle stellt eine Auswahl der mitgelieferten Cmdlets den vergleichbaren Befehlen anderer Kommandozeileninterpreter gegenüber.
Windows PowerShell
(Cmdlet)Windows PowerShell
(Alias)cmd.exe bzw. command.com
(MS-DOS, Windows, OS/2, etc.)Unix-Shell
(Unix, BSD, Linux, etc.)Beschreibung Get-Location gl, pwd cd pwd Ausgabe des aktuellen Verzeichnisses Set-Location sl, cd, chdir cd, chdir cd Wechseln des aktuellen Verzeichnisses Clear-Host cls, clear cls clear Löschen des Bildschirms Copy-Item cpi, copy, cp copy cp Kopieren einer oder mehrerer Dateien / eines ganzen Verzeichnisbaums Get-Help help, man help man Hilfe zu Befehlen Remove-Item ri, del, erase, rmdir, rd, rm del, rmdir, rd rm, rmdir Löschen einer Datei / eines Verzeichnisses Rename-Item rni, ren ren mv Umbenennen einer Datei / eines Verzeichnisses Move-Item mi, move, mv move mv Verschieben einer Datei / eines Verzeichnisses Get-ChildItem gci, dir, ls dir ls Liste aller Dateien / Verzeichnisse im (aktuellen) Verzeichnis Write-Output echo, write echo echo Ausgabe von Zeichenketten, Variablen etc. auf dem Bildschirm Pop-Location popd popd popd In Verzeichnis wechseln, welches zuletzt auf dem Stack abgelegt wurde Push-Location pushd pushd pushd Verzeichnis auf dem Stack ablegen Set-Variable sv, set set set Wert einer Variable setzen / Variable anlegen Get-Content gc, type, cat type cat Ausgabe einer Datei Select-String find, findstr grep Suche und Filterung definierter Zeichenketten Get-Process gps, ps tasklist ps Liste aller momentan laufenden Prozesse Stop-Process spps, kill taskkill kill Beenden eines laufenden Prozesses Tee-Object tee tee Standardeingabe in eine Datei oder Variable umleiten und entlang der Pipeline weiterreichen (Standardausgabe) Beispiele
Beende alle Prozesse, deren Namen mit dem Buchstaben „p“ beginnen:
Get-Process p* | Stop-Process
Suche alle Prozesse, die mehr als 10 MB Hauptspeicher verwenden, und beende sie:Get-Process | where { $_.WS -gt 10MB } | Stop-Process
Berechne die Gesamtanzahl der Bytes aller Dateien in einem Verzeichnis:Get-ChildItem | Measure-Object -Property Length -Sum
Warte, bis ein bestimmter Prozess beendet wurde:$processToWatch = Get-Process notepad $processToWatch.WaitForExit()
Ändere eine Zeichenkette von Kleinbuchstaben in Großbuchstaben:"hallo welt!".ToUpper()
Füge die Zeichenfolge „ABC“ nach dem ersten Buchstaben des Wortes „string“ ein, um als Ergebnis „sABCtring“ zu erhalten:"string".Insert(1, "ABC")
Lade einen bestimmten RSS-Feed herunter und zeige die Überschriften der acht neuesten Einträge:$rssUrl = "http://blogs.msdn.com/b/powershell/rss.aspx" $blog = [xml](New-Object System.Net.WebClient).DownloadString($rssUrl) $blog.rss.channel.item | select title -First 8
Äquivalent zu rm -rf / unter Unix:Get-PSDrive -p "FileSystem" | % { ls -Recurse $_.Root | rm –Force }
Dateiendungen
- .ps1 – Windows PowerShell Shell-Skript
- .ps1xml – Windows PowerShell Format- und Typdefinitionen
- .psc1 – Windows PowerShell Konsolendatei (exportierte Shell-Konfiguration)
- .psd1 – Windows PowerShell Datendatei
- .psm1 – Windows PowerShell Moduldatei
Software-Unterstützung
Software Version Cmdlets Provider Grafische Benutzeroberfläche Microsoft Exchange Server 2007 Ja (402) Ja Ja Microsoft Exchange Server 2010 Ja Ja Ja Microsoft Windows Server 2008 Ja Ja Nein Microsoft Windows Server 2008 Core Nein Nein Nein Microsoft Windows Server 2008 R2 Core Ja Nein Nein Microsoft SQL Server 2008 Ja Ja Nein Microsoft System Center Operations Manager 2007 Ja (74) Ja Nein Microsoft System Center Virtual Machine Manager 2007 Ja Ja Ja Microsoft System Center Data Protection Manager 2007 Ja Nein Nein Microsoft Windows Compute Cluster Server 2007 Ja Ja Nein Microsoft Transporter Suite for Lotus Domino[2] 08.02.0012 Ja (47) Nein Nein Microsoft PowerTools for Open XML[3] 1.0 Ja (33) Nein Nein IBM WebSphere MQ[4] 6.0.2.2 Ja (44) Nein Nein Quest Management Shell for Active Directory[5] 1.1 Ja (40) Nein Nein Special Operations Software Specops Command[6] 1.0 Ja Nein Ja VMware Infrastructure Toolkit[7] 1.0 Update 1 Ja (125) Nein Nein Internet Information Services[8] 7.0 Ja (54) Ja Nein Microsoft Windows 7 Troubleshooting Center 6.1 Ja Nein Ja Microsoft Deployment Toolkit 2010 Ja Nein Nein LOGINventory 5.x Ja Ja Ja Zukunft
Der Arbeitstitel für die nächste Version lautet Aspen [9] [10], welcher gleichzeitig auch der Arbeitstitel für die nächste Generation der Microsoft Management Console (MMC) ist. Chef-Architekt des zuständigen Teams ist Jeffrey Snover. Zukünftig sollen alle Windows-Administrationswerkzeuge der MMC unter der grafischen Oberfläche auf der Windows PowerShell aufbauen, so dass sich Windows sowohl komplett über die grafische Benutzeroberfläche als auch alternativ über die Kommandozeile administrieren lässt. Während der Schwerpunkt der Entwicklung für die erste Version vor allem auf der Skriptsprache lag, sind für die Nachfolge-Version unter anderem ein flexibleres Terminal-Fenster und weitere Cmdlets geplant. [11]
Quellen
- ↑ Informationen zur PowerShell 2.0
- ↑ Microsoft Transporter Suite for Lotus Domino. Abgerufen am 18. Februar 2008.
- ↑ PowerTools for Open XML. Abgerufen am 20. Juni 2008.
- ↑ MO74: WebSphere MQ – Windows Powershell Library. Abgerufen am 18. Februar 2008.
- ↑ PowerShell Commands for Active Directory by Quest Software. Abgerufen am 2. Juli 2008.
- ↑ PowerShell Remoting through Group Policy. Abgerufen am 18. Februar 2008.
- ↑ VMware Infrastructure Toolkit for Windows. Abgerufen am 26. November 2008.
- ↑ Windows PowerShell : IIS7 PowerShell Provider Tech Preview 2. Abgerufen am 3. Juli 2008.
- ↑ http://www.it-visions.de/glossar/dotnet/4439/Aspen.aspx
- ↑ http://blogs.zdnet.com/microsoft/?p=20
- ↑ http://thepowershellguy.com/blogs/posh/archive/2007/08/18/powershell-webcasts-and-virtual-labs-covering-exchange-2007-and-mmc-3-0.aspx
Literatur
Deutsch
- Ulrich Cuber: Windows PowerShell. Mitp-Verlag 2007, ISBN 978-3-8266-1673-0.
- Lee Holmes: Windows PowerShell – kurz & gut. O’Reilly Verlag 2007, ISBN 978-3-89721-532-0.
- Peter Monadjemi: Windows PowerShell – Crashkurs. Microsoft Press Deutschland 2007, ISBN 978-3-86645-617-4.
- Andy Oakley: Schnelleinstieg in die Windows PowerShell. O’Reilly Verlag 2007, ISBN 978-3-89721-487-3.
- Bruce Payette: Windows PowerShell im Einsatz. Hanser Fachbuchverlag 2007, ISBN 978-3-446-41239-2.
- Holger Schwichtenberg: Windows PowerShell. Addison-Wesley 2007, ISBN 978-3-8273-2533-4.
- Holger Schwichtenberg: Windows Scripting. Automatisierte Systemadministration mit dem Windows Script Host und der Windows PowerShell. Addison-Wesley 2007, ISBN 978-3-8273-2423-8.
- Helma Spona: Windows PowerShell. Sprachgrundlagen, Dateisystem, Datenbankzugriffe, WMI-Steuerung. Galileo Press 2007, ISBN 978-3-89842-880-4.
- Tobias Weltner: Scripting mit Windows PowerShell – Einsteiger-Workshop. Microsoft Press Deutschland 2007, ISBN 978-3-86645-620-4.
- Tobias Weltner: PowerShell Scripting für Administratoren. Microsoft Press Deutschland 2008, ISBN 978-3-86645-635-8.
Englisch
- Jerry Lee Ford Jr.: Microsoft Windows Powershell Programming for the Absolute Beginner. Course Technology Ptr 2007, ISBN 1-59863-354-6.
- Lee Holmes: Windows PowerShell Quick Reference. O’Reilly 2006, ISBN 0-596-52813-2.
- Don Jones: An Introduction to Microsoft® PowerShell™. Realtimepublishers.com 2006.
- Don Jones, Jeffery Hicks: Windows PowerShell™: TFM®. SAPIEN Press 2006, ISBN 0-9776597-1-2.
- Tyson Kopczynski: Microsoft Powershell Unleashed. Sams Publishing 2007, ISBN 0-672-32953-0.
- Andy Oakley: Monad – Introducing the MSH Command Shell and Language. O’Reilly 2006, ISBN 0-596-10009-4.
- Bruce Payette: Windows PowerShell in Action. Manning Publications, ISBN 1-932394-90-7.
- Andrew Watt: Professional Windows PowerShell. Wrox Press 2007, ISBN 0-471-94693-1.
- Ed Wilson: Microsoft® Windows PowerShell™ Step By Step. Microsoft Press 2007, ISBN 0-7356-2395-3.
Weblinks
- Script Center: Skripting mit der Windows PowerShell – Microsofts Einstiegs-Seite zur Windows PowerShell
- Windows PowerShell Quick Reference
- Die Neuerungen von PowerShell 3.0 im Überblick
- Weblog des PowerShell-Entwicklerteams (en) – Informationen und Neuigkeiten zur PowerShell aus erster Hand
- Inoffizielles PowerShell-Wiki auf Channel 9 (en) – Informationen, kurzer Überblick über die Skriptsprache, Beispielskripte, etc. im Internet Archive vom 2. September 2010
- Muschelzucht im Ausland – PowerShell-Artikel erschienen im Linux-Magazin 2006/12
- PowerGUI.org (en) PowerShell Community und Anbieter eines kostenlosen Grafischen User Interfaces und Skripteditor für Microsoft Windows Powershell
Wikimedia Foundation.