Alle Dateien aus allen Unterordnern auflisten
Mit folgender Zeile kann man alle Dateien aus dem aktuellen und allen Unterverzeichnissen sich auflisten lassen:
Get-ChildItem -Recurse | where {!$_.PSIsContainer} | Select-Object -ExpandProperty FullName
Mit „-ExpandProperty“ wird sichergestellt, dass der Dateiname nicht gekürzt wird.
PowerShell 3.0: Daten aus dem Web abrufen
Mit dem neuen CmdLet „Invoke-WebRequest“ wird ermöglicht sehr komfortabel auf Internet Ressourcen zuzugreifen. Weitere unten wird eine .NET-Version vorgestellt, die in älteren Versionen der PowerShell funktioniert.
Beispiel
Invoke-WebRequest www.cpwenz-developer.de // StatusCode : 200 // StatusDescription : OK // Content : <!DOCTYPE html><html><head ... // <link href="/Styles/Global.css" rel="stylesheet" ...
// RawContent : HTTP/1.1 200 OK Content-Style-Type: text/css ...
Aufzeichnen mit start-transcript und end-transcript
Mit start-transcript werden alle Eingaben und Ausgaben in eine Textdatei geschrieben. Der Befehl stop-transcript beendet die Aufzeichnung.
Beispiel
Start-Transcript MyLog.txt dir Stop-Transcript
Ausgabe gruppieren – group-object
Mit dem Befehl group-objekt kann die Ausgabe nach einer Property gruppiert werden.
Beispiel
dir | group-object extension dir | group-object mode
PowerShell kann reden mit SpVoice
Dank der Windows 7 eigenen Speech API ist es möglich, sich in der PowerShell Texte volesen zu lassen. Die folgenden Beispiele benutzen dabei das SpVoice Interface. [Ideen-Quelle: 1]
Beispiel
$toTalk=dir (new-object -com SAPI.SpVoice).speak($toTalk)
Rechnen mit der PowerShell
Die PowerShell kann grundlegende Arithmetik und beherrscht diverse Speichergrößeneinheiten ( MB, GB, … ) direkt in der Befehlseingabe.
Beispiel
4+5 12MB+2GB+1024MB
Ausgabe an den Drucker – Out-Printer
Jede Ausgabe kann an den Drucker gesendet werden. Ohne Parameter wird der aktuelle Standard-Drucker benutzt. Alternativ kann mit -Name ein spezieller Drucker adressiert werden.
dir | out-printer $test=get-help dir out-printer -inputobject $test
Generieren von HTML mit ConvertTo-HTML
Eine HTML-Seite kann man mit jedem beliebigen Browser öffnen. Mit dem CmdLet ConvertTo-HTML ist es nun möglich, in der PowerShell jedes .NET-Objekt nach HTML zu konvertieren. Besonders interessant wird das, wenn auf einem Webserver regelmäßig ein Script mit diesem Befehl ausgeführt wird, dann kann der Zustand des Servers sehr komfortabel überwacht werden.
Beispiel
dir | convertTo-Html > index.html Get-Process | convertTo-Html -title "Alle Prozesse" > procc.html
Abrufen von Daten aus dem Internet (.NET-Version)
Da die PowerShell Zugriff auf die .NET Klassenbibliothek hat, kann man die WebClient Klasse benutzen. Dadurch ist es unter anderem möglich, eine ganzes HTML-/XML-Dokument in einer Variable abzulegen und diese dann in einem Script auszuwerten.
Beispiel
(New-Object Net.WebClient).DownloadString("http://www.cpwenz.de")
Virtuelles Laufwerk erzeugen mit New-PSDrive
Die PowerShell ermöglicht es durch das Dateisystem, die Registry und andere virtuelle Strukturen zu navigieren. Dafür werden neue Laufwerke erzeugt.
Beispiel
New-PSDrive Carl Filesystem C:\temp cd Carl:
Welche Befehle gibt es eigentlich? -> get-command
Mit get-command kann man sich alle verfügbaren Befehle/Commands auflisten lassen. Folgendes Beispiel zeigt, wie man sich alle get-* CmdLets ausgeben lassen kann.
Beispiel
Get-Command -CommandType CmdLet get-*
Systeminformationen mit WMI -> Get-WmiObject
Mithilfe der Windows Managment Instrumentation ist es möglich, alle Arten von Informationen über den aktuellen Computer zu erfahren und zu manipulieren. Im Folgenden werden einige nützliche Beispiele gezeigt. Auch bei diesen Befehlen gilt: Die Ausgabe kann weitergeleitet werden (out-gridView und ConvertTo-HTML).
Beispiel
# Alle Informationen über den Prozessor: Get-WmiObject Win32_Processor # Informationen über die Laufwerke: Get-WmiObject Win32_DiskDrive # Informationen über das Betriebssystem: Get-WmiObject Win32_OperatingSystem
Reguläre Ausdrücke
Reguläre Ausdrücke können (unter anderem) mit folgenden Operatoren, Anweisungen und Cmdlets benutzt werden:
-
- Operator: -match | Beispiel: „Text“ -match „….“
- Anweisung: switch
- CmdLet: Select-String
Verzeichnis Stack – Push-Location und Pop-Location
Mit diesen beiden Befehlen ist es möglich, den aktuellen Ort auf einen Stack zu legen (Push-Location) und später wieder zurückzuspringen (Pop-Location).
Beispiel
PS C:\Users\Carl> Push-Location PS C:\Users\Carl> cd .. PS C:\Users> cd .. PS C:\> Pop-Location PS C:\Users\Carl>
Links und Quellen
- PowerShell vorlesen: powershell-tips.blogspot.in/2012/05/speaking-script-in-powershell.html
- Diverse gute kleine Scripts: www.msxfaq.de/code/powershell.htm
- Neuerungen zur PowerShell 3.0: technet.microsoft.com/en-us/library/hh857339.aspx