Power Shell

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

  1. PowerShell vorlesen: powershell-tips.blogspot.in/2012/05/speaking-script-in-powershell.html
  2. Diverse gute kleine Scripts: www.msxfaq.de/code/powershell.htm
  3. Neuerungen zur PowerShell 3.0: technet.microsoft.com/en-us/library/hh857339.aspx