Die Windows PowerShell ist eine von Microsoft entwickelte, mächtige Alternative zumWindows-Kommandozeilenprogramm cmd.exe und zum Windows Script Host.
Sie kann seit Windows Version 7 benutzt werden. Die Kommondas der PowerShell werden Cmdlets genannt.
Für Einsteiger gibt es hier einen Blog von Microsoft.
Cmdlets
Get-Location | Ausgabe des aktuellen Verzeichnisses |
Set-Location | Wechseln des aktuellen Verzeichnisses |
Clear-Host | Löschen des Bildschirms |
Copy-Item | Kopieren einer oder mehrerer Dateien / eines ganzen Verzeichnisbaums |
Get-Help | Hilfe zu Befehlen |
Remove-Item | Löschen einer Datei / eines Verzeichnisses |
Rename-Item | Umbenennen einer Datei / eines Verzeichnisses |
Move-Item | Verschieben einer Datei / eines Verzeichnisses |
Get-ChildItem | Liste aller Dateien / Verzeichnisse im (aktuellen) Verzeichnis |
Write-Output | Ausgabe von Zeichenketten, Variablen etc. auf dem Bildschirm |
Pop-Location | In Verzeichnis wechseln, welches zuletzt auf dem Stack abgelegt wurde |
Push-Location | Verzeichnis auf dem Stack ablegen |
Set-Variable | Wert einer Variable setzen / Variable anlegen |
Get-Content | Ausgabe einer Datei |
Select-String | Suche und Filterung definierter Zeichenketten |
Get-Process | Liste aller momentan laufenden Prozesse |
Stop-Process | Beenden eines laufenden Prozesses |
Tee-Object | Standardeingabe in eine Datei oder Variable umleiten und entlang der Pipeline weiterreichen |
Kleine Tips
Um ein Powershell-Skript aufzurufen, muss man entweder
- den kompletten Pfad mit einem "& " davor eingeben oder
- ". " vor den Namen des Skriptes schreiben, z. B. powershell.exe -command „& c:\beispiel.ps1“ oder
- mit einem Rechtsklick auf die ".ps1" -Datei "Bearbeiten" auswählen. Dann öffnet sich die Powershell-Konsole
Die Dateiendung für Powershell-Skripte ist ps1. In der Powershell selbst kann das Skript mit ./beispiel.ps1 gestartet werden. Aus Sicherheitsgründen verweigert das System defaultmäßig die Ausführung von Powershell-Skripten. Dies muss in der Powershell selbst mit
set-ExecutionPolicy RemoteSigned
In PowerShell v 2.0 kann einfach mit ise das Powershell-GUI aufgerufen werden.
$_ | Das aktuelle Objekte einer Pipeline, eines Filter und den verschiedenen Schleifen. |
$$ | Enthält das letzte Token der Shell-Eingabe |
$? | Enthält den erfolg/Fehler des letzten Befehls |
$Args | Enthält übergebene Parameter einer Funktion bzw. eines Skripts |
$Error | Enthält die bis zu 256 letzten Fehlermeldungen |
$foreach | Stellt die Aufzählungsvariable einer Schleife dar. |
$HOME | Heimatverzeichnis des Anwenders (%HOMEDRIVE%\%HOMEPATH%) |
$Input | Input piped einer Funktion oder eines Codeblocks |
$Match | Eine Hashtabelle, die alle Elemente enthält, welche durch den "-match"-Operator gefunden wurde. |
$MyInvocation | Informationen über das aktuelle Skript oder die Kommandozeile |
$Host | Informationen über den aktuellen Computer |
$LastExitCode | Exitcode der zuletzt aufgerufenen Anwendung (Nicht Powershellbefehl) |
$true | Boolean WAHR |
$false | Boolean FALSCH |
$null | "nichts", also ein NULL-Objekt. Ideal um Objekte zu zerstören oder in IF-Abfragen zu vergleichen |
$OFS | "Output Field Separator". Hiermit geben Sie das Trennzeichen für die Konvertierung von Arrays zu String und umgekehrt an. Standardeinstellung ist das "Leerzeichen" |
$ShellID | Identifizierung die Shell. Normalweise "Microsoft.PowerShell" |
$StackTrace | Stacktrace der letzten Aktion |
$env:variablenname | Umgebungsvariablen abfragen |
$global:varname | Variablen "global" setzen und lesen |
Weitere Infos
//www.it-visions.de/scripting/powershell/
Beispiel
Ausgabe aller laufenden Dienste:
get-service | where-object {$_.status -eq "Running"}Ausgabe von Infos über das System:
get-WmiObject win32_computersystem
Ausgabe aller installierten Programme (wie in "Programme und Funktionen")
Snap-Ins - mehrere Cmdlets zusammen - erweitern die Funktionalität der PowerShell.