PowerShell Grundlagen

Einleitung

PowerShell ist eine objektorientierte Skript- und Programmiersprache für die Administration von Windows. Man arbeitet dabei mit der Kommandoeingabe, auch CLI genannt.

Was bedeutet CLI? CLI steht für "Command Line Interface". Synonyme dafür sind: Kommandoeingabe, Befehlseingabe oder einfach nur Shell. Bei einer Abfolge von Kommandos in einer ausführbaren Textdatei, spricht man von einem Skript!

PowerShell ist sehr mächtig. Gründe dafür sind:

  • Effiziente Administration von Windows Servern
  • Seit 2016 ist PowerShell OpenSource und bei jeder Windows 10 Version dabei
  • Wiederholende Tätigkeiten lassen sich automatisieren
  • Bei einem Server ohne GUI ist PowerShell unbedingt erforderlich
  • Die Kommandoeingabe zu beherrschen ist COOL!
Was ist ein GUI? GUI steht für "Guided User Interface". Damit ist gemeint, dass es Fenster mit visuellem Inhalt gibt. Es gibt Farben, Bilder, Videos und Vieles mehr. Ein Server braucht nicht unbedingt ein GUI zum Funktionieren. Ohne GUI gibt es nur die Kommandoeingabe, um Tätigkeiten auszuführen. Darum lernen wir PowerShell.

Cmdlets

Cmdlets, auch Commandlets genannt, ist die Bezeichnung für Befehle in der PowerShell. Wenn wir Skripte mit Cmdlets schreiben, können wir diese mit if-Bedingungen, Schleifen und Funktionen steuern. Aus diesem Grund ist PowerShell nicht nur eine Skript-, sondern auch eine Programmmiersprache.

Verb-Nomen-Struktur

Die PowerShell hat eine sehr simple Syntax, sprich Bauform der Kommandos. Zum Beispiel das Cmdlet Set-Location kann man nutzen um den Zielpfad zu setzen. Um die Cmdlets zu verstehen, sind Grundkenntnisse der englischen Sprache von Vorteil. Werden aber in diesem Tutorial nicht vorausgesetzt.

PowerShell ISE

Ebenfalls bei Windows integriert, ist die PowerShell ISE. ISE steht für "Integrated Scripting Environment", auf Deutsch: integrierte Skript-Umgebung. Wie der Name schon sagt, hier werden Skripte geschrieben bzw. eine Abfolge von Kommandos in einer Textdatei gespeichert. Dabei ist das Code-Highlighting sehr nützlich. Code-Highlighting bedeutet, dass Schlüsselwörter und Kommandos in Farben angezeigt werden. Dies hilft der Übersichtlichkeit.

Erste Kommandos

Um den Pfand zu ändern, in dem wir uns befinden, nutzen wir Set-Location. Kommentare werden mit einem # davor geschrieben:

PS C:\Program Files> Set-Location C:\ # Wechsel des Pfads
PS C:\> # Aktueller Pfad

Wie wir sehen, wird hier das Verb-Nomen Prinzip angewendet. Dabei ist Set das Verb und Location das Nomen. Wenn wir alle Kommandos ansehen möchten, welche das Verb Set anzubieten hat, geben wir ein:

PS C:\> Get-Command -Verb Set

CommandType     Name                                               Version    Source          
-----------     ----                                               -------    ------          
Alias           Set-AppPackageDefaultVolume                        2.0.1.0    Appx            
Alias           Set-AppPackageProvisionedDataFile                  3.0        Dism            
Alias           Set-AutologgerConfig                               1.0.0.0    EventTracingM...
Alias           Set-EtwTraceSession                                1.0.0.0    EventTracingM...
Alias           Set-ProvisionedAppPackageDataFile                  3.0        Dism            
Alias           Set-ProvisionedAppXDataFile                        3.0        Dism            
Function        Set-BCAuthentication                               1.0.0.0    BranchCache     
Function        Set-BCCache                                        1.0.0.0    BranchCache     
Function        Set-BCDataCacheEntryMaxAge                         1.0.0.0    BranchCache     
...

Wir sehen, wir erhalten eine komplette Liste aller Set-Befehle. Das selbe Prinzip mit dem Nomen Location:

PS C:\> Get-Command -Noun Location

CommandType     Name                                               Version    Source          
-----------     ----                                               -------    ------          
Cmdlet          Get-Location                                       3.1.0.0    Microsoft.Pow...
Cmdlet          Pop-Location                                       3.1.0.0    Microsoft.Pow...
Cmdlet          Push-Location                                      3.1.0.0    Microsoft.Pow...
Cmdlet          Set-Location                                       3.1.0.0    Microsoft.Pow...

Hier erhalten wir nur 4 Kommandos, welche das Nomen Location beinhalten. Nun ist der Bildschirm jedoch ziemlich voller Text. Wenn man die Anzeige wieder leeren möchte, hilft der Befehl Clear-Host:

S C:\> Clear-Host

Die Anzeige ist nun wieder sauber und bereit für neue Kommandos.

Verb-Nomen-Prinzip: Bitte merkt euch, dass die Kommandos in PowerShell immer nach dem Verb-Nomen-Prinzip ablaufen. Das hilft beim Verständnis.
Auswendig: "Get-Command -Verb" und "Get-Command -Noun".