Skip to main content

PowerShell – Parameter

Grundidee

Parameter sind Zusatzangaben zu einem PowerShell-Befehl.

Mit Parametern legt man fest, was genau ein Cmdlet tun soll oder wie es arbeiten soll.

Ein PowerShell-Befehl besteht meistens aus:

BestandteilBedeutung
CmdletDer eigentliche PowerShell-Befehl
ParameterZusatzangabe, die das Cmdlet genauer steuert
ParameterwertDer konkrete Wert, der an den Parameter übergeben wird

Beispiel:

Get-Process -Name "notepad"

Bedeutung:

TeilErklärung
Get-ProcessCmdlet
-NameParameter
"notepad"Parameterwert

PowerShell zeigt dadurch nicht alle Prozesse an, sondern nur den Prozess mit dem Namen notepad.


Merksatz

Cmdlet = Was soll passieren?
Parameter = Wie genau soll es passieren?
Parameterwert = Womit oder worauf soll es passieren?


Typischer Aufbau

Ein PowerShell-Befehl mit Parameter hat meistens diesen Aufbau:

Cmdlet -Parameter Wert

Beispiel:

Get-Service -Name "Spooler"

Bedeutung:

TeilErklärung
Get-ServiceDienste anzeigen
-NameNach einem bestimmten Dienstnamen suchen
"Spooler"Druckwarteschlange als konkreter Dienst

Warum Parameter wichtig sind

Ohne Parameter führt ein Cmdlet oft eine allgemeine Aktion aus.

Beispiel:

Get-Service

Dieser Befehl zeigt viele Dienste an.

Mit Parameter wird die Ausgabe gezielter:

Get-Service -Name "Spooler"

Jetzt wird nur der Dienst Spooler angezeigt.

Parameter helfen also dabei, Befehle genauer, sicherer und gezielter auszuführen.


Parameter mit Wert

Viele Parameter benötigen einen Wert.

Beispiel:

Get-ChildItem -Path "C:\Temp"

Hier braucht der Parameter -Path einen konkreten Pfad.

Weitere Beispiele:

Get-Process -Name "notepad"

Get-Service -Name "Spooler"

Get-ChildItem -Filter "*.txt"

Typische Parameter mit Wert:

ParameterBedeutung
-NameName eines Objekts
-PathPfad zu Datei oder Ordner
-FilterFilter für Dateien oder Objekte
-ComputerNameZielcomputer
-CredentialZugangsdaten
-DestinationZielpfad
-SourceQuellpfad

Schalterparameter

Ein Schalterparameter braucht keinen eigenen Wert.

Er ist aktiv, sobald man ihn angibt.

Beispiel:

Get-ChildItem -Recurse

Der Parameter -Recurse bedeutet, dass auch Unterordner durchsucht werden.

Weitere Beispiele:

Remove-Item "C:\Temp\test.txt" -Force

Get-ChildItem -Hidden

Stop-Process -Name "notepad" -Force

Typische Schalterparameter:

ParameterBedeutung
-RecurseUnterordner einbeziehen
-ForceAktion erzwingen
-HiddenVersteckte Elemente anzeigen
-WhatIfZeigt, was passieren würde, ohne es auszuführen
-ConfirmFragt vor der Ausführung nach Bestätigung

Wichtige Sicherheitsparameter

Besonders wichtig sind -WhatIf und -Confirm.

Diese Parameter helfen, gefährliche Aktionen zu prüfen.

Beispiel:

Remove-Item "C:\Temp\test.txt" -WhatIf

PowerShell zeigt nur an, was gelöscht werden würde.
Die Datei wird nicht wirklich gelöscht.

Beispiel mit Bestätigung:

Remove-Item "C:\Temp\test.txt" -Confirm

PowerShell fragt vor dem Löschen nach.

Das ist besonders wichtig bei Befehlen wie:

CmdletRisiko
Remove-ItemDateien oder Ordner löschen
Stop-ProcessProzesse beenden
Restart-ComputerComputer neu starten
Set-ItemWerte ändern
New-ItemNeue Dateien, Ordner oder Einträge erstellen

Positionelle Parameter

Manche Parameter müssen nicht ausgeschrieben werden, weil PowerShell anhand der Position erkennt, welcher Parameter gemeint ist.

Beispiel mit ausgeschriebenem Parameter:

Get-ChildItem -Path "C:\Temp"

Kurzform:

Get-ChildItem "C:\Temp"

PowerShell erkennt hier, dass "C:\Temp" der Wert für -Path ist.

Für die Prüfung und für saubere Dokumentation ist die ausgeschriebene Variante besser:

Get-ChildItem -Path "C:\Temp"

Sie ist klarer und leichter nachvollziehbar.


Mehrere Parameter kombinieren

Ein Cmdlet kann mehrere Parameter gleichzeitig verwenden.

Beispiel:

Get-ChildItem -Path "C:\Temp" -Filter "*.txt" -Recurse

Bedeutung:

TeilErklärung
Get-ChildItemOrdnerinhalt anzeigen
-Path "C:\Temp"Im Ordner C:\Temp suchen
-Filter "*.txt"Nur Textdateien anzeigen
-RecurseAuch Unterordner durchsuchen

Der Befehl sucht also im Ordner C:\Temp und allen Unterordnern nach Dateien mit der Endung .txt.


Parameter und Datentypen

Parameter erwarten oft bestimmte Datentypen.

Beispiele:

DatentypBeispielBedeutung
String"notepad"Text
Integer10Ganze Zahl
Boolean$true / $falseWahr oder falsch
Array"PC1","PC2","PC3"Mehrere Werte
CredentialBenutzername/KennwortZugangsdaten
Switch-ForceSchalterparameter ohne Wert

Beispiel mit mehreren Namen:

Get-Service -Name "Spooler","WinRM"

Hier bekommt der Parameter -Name mehrere Werte.


Parameter und Anführungszeichen

Texte mit Leerzeichen sollten in Anführungszeichen geschrieben werden.

Beispiel:

Get-ChildItem -Path "C:\Meine Dateien"

Ohne Anführungszeichen könnte PowerShell den Pfad falsch interpretieren.

Bei einfachen Werten ohne Leerzeichen sind Anführungszeichen oft nicht zwingend nötig:

Get-Service -Name Spooler

Trotzdem ist es beim Lernen oft übersichtlicher, Zeichenketten mit Anführungszeichen zu schreiben.


Parameter mit Wildcards

Viele Parameter unterstützen Platzhalterzeichen.

Das wichtigste Platzhalterzeichen ist:

ZeichenBedeutung
*Steht für beliebig viele Zeichen
?Steht für genau ein Zeichen

Beispiel:

Get-Service -Name "Win*"

Zeigt Dienste an, deren Name mit Win beginnt.

Beispiel:

Get-ChildItem -Path "C:\Temp" -Filter "*.txt"

Zeigt alle Dateien mit der Endung .txt an.


Pflichtparameter

Manche Parameter sind erforderlich.

Wenn ein Pflichtparameter fehlt, fragt PowerShell nach dem fehlenden Wert.

Beispiel:

Read-Host -Prompt

PowerShell erwartet hier einen Wert für -Prompt.

Besser:

Read-Host -Prompt "Bitte Namen eingeben"

Optionale Parameter

Viele Parameter sind optional.

Beispiel:

Get-Process

Dieser Befehl funktioniert ohne weitere Parameter.

Mit optionalem Parameter wird er genauer:

Get-Process -Name "notepad"

Der Parameter -Name ist hier nicht zwingend notwendig, aber nützlich.


Parameter und Pipeline

PowerShell arbeitet objektorientiert.
Die Pipeline übergibt nicht nur Text, sondern Objekte von einem Befehl zum nächsten.

Beispiel:

Get-Process -Name "notepad" | Stop-Process

Bedeutung:

TeilErklärung
Get-Process -Name "notepad"Sucht den Prozess notepad
Pipe-ZeichenÜbergibt das gefundene Objekt weiter
Stop-ProcessBeendet den übergebenen Prozess

Noch deutlicher:

Get-Process -Name "notepad" | Stop-Process -Force

Hier beendet PowerShell den Prozess notepad erzwungen.


Pipeline-Parameter

Einige Parameter können Werte aus der Pipeline annehmen.

Beispiel:

Get-Service -Name "Spooler" | Stop-Service

Der Dienst wird zuerst gesucht und dann an Stop-Service weitergegeben.

PowerShell erkennt anhand des Objekttyps, welcher Parameter des nächsten Cmdlets den Wert annehmen kann.

Das nennt man auch:

BegriffBedeutung
Pipeline InputEingabe aus der Pipeline
ByValueÜbergabe anhand des Objekttyps
ByPropertyNameÜbergabe anhand eines passenden Eigenschaftsnamens

Für die IHK reicht meistens das Grundverständnis:

Die Pipeline übergibt das Ergebnis eines Befehls an den nächsten Befehl. Parameter können diese übergebenen Werte weiterverarbeiten.


Common Parameters

Viele PowerShell-Cmdlets besitzen gemeinsame Standardparameter.

Diese nennt man Common Parameters.

Wichtige Beispiele:

ParameterBedeutung
-VerboseGibt ausführlichere Informationen aus
-DebugGibt Debug-Informationen aus
-ErrorActionLegt fest, wie Fehler behandelt werden
-ErrorVariableSpeichert Fehler in einer Variable
-WarningActionLegt fest, wie Warnungen behandelt werden
-OutVariableSpeichert die Ausgabe in einer Variable
-PipelineVariableSpeichert Pipeline-Objekte in einer Variable

Beispiel:

Get-Service -Name "Spooler" -Verbose

Mit -Verbose können zusätzliche Informationen angezeigt werden.


Fehlerbehandlung mit Parametern

Ein wichtiger Parameter ist -ErrorAction.

Damit legt man fest, wie PowerShell bei Fehlern reagieren soll.

Beispiel:

Get-Item -Path "C:\NichtVorhanden" -ErrorAction SilentlyContinue

Bedeutung:

PowerShell gibt keinen sichtbaren Fehler aus, wenn der Pfad nicht existiert.

Häufige Werte für -ErrorAction:

WertBedeutung
ContinueFehler anzeigen und weitermachen
StopFehler anzeigen und Ausführung stoppen
SilentlyContinueFehler nicht anzeigen und weitermachen
InquireNachfrage anzeigen
IgnoreFehler ignorieren

Parameter herausfinden

Man muss nicht alle Parameter auswendig kennen.

PowerShell bietet Hilfe-Befehle.

Wichtige Befehle:

Get-Help Get-ChildItem

Zeigt Hilfe zum Cmdlet an.

Get-Help Get-ChildItem -Detailed

Zeigt ausführlichere Informationen.

Get-Help Get-ChildItem -Examples

Zeigt Beispiele.

Get-Command Get-ChildItem -Syntax

Zeigt die Syntax des Cmdlets.

Get-Command Get-ChildItem | Select-Object -ExpandProperty Parameters

Zeigt die verfügbaren Parameter eines Cmdlets.


Syntax in der Hilfe verstehen

Bei PowerShell-Hilfeausgaben sieht man oft eckige Klammern.

Beispiel:

Get-ChildItem [[-Path] <string[]>] [-Filter <string>] [-Recurse]

Bedeutung:

SchreibweiseBedeutung
[-Path]Parameter ist optional
<string[]>Erwartet einen oder mehrere Textwerte
[-Filter ]Optionaler Parameter mit Textwert
[-Recurse]Optionaler Schalterparameter

Wichtig:

Eckige Klammern bedeuten in der Syntax meistens: optional.


Cmdlet-Namen und Parameter

PowerShell-Cmdlets folgen meistens dem Verb-Nomen-Schema.

Beispiele:

CmdletBedeutung
Get-ProcessProzesse abrufen
Stop-ProcessProzess beenden
Get-ServiceDienste abrufen
Start-ServiceDienst starten
Stop-ServiceDienst stoppen
Get-ChildItemOrdnerinhalt anzeigen
Remove-ItemDatei/Ordner löschen
New-ItemDatei/Ordner erstellen
Copy-ItemDatei/Ordner kopieren
Move-ItemDatei/Ordner verschieben

Parameter passen sich an das jeweilige Cmdlet an.

Beispiel:

Get-Service -Name "Spooler"

Stop-Service -Name "Spooler"

Beide Befehle nutzen -Name, aber mit unterschiedlicher Aktion.


Aliase und Parameter

PowerShell besitzt auch Kurzformen, sogenannte Aliase.

Beispiele:

AliasEigentliches Cmdlet
dirGet-ChildItem
lsGet-ChildItem
cdSet-Location
copyCopy-Item
delRemove-Item
catGet-Content

Beispiel:

dir "C:\Temp"

Das entspricht ungefähr:

Get-ChildItem -Path "C:\Temp"

Für die IHK und Dokumentation ist das ausgeschriebene Cmdlet besser, weil es eindeutiger ist.


Parameter in eigenen Skripten

Auch eigene PowerShell-Skripte können Parameter besitzen.

Beispiel:

param(
    [string]$Name
)

Write-Output "Hallo $Name"

Wenn das Skript zum Beispiel gruss.ps1 heißt, kann man es so starten:

.\gruss.ps1 -Name "Felix"

Ausgabe:

Hallo Felix

Mehrere eigene Parameter

Beispiel:

param(
    [string]$Name,
    [int]$Alter
)

Write-Output "$Name ist $Alter Jahre alt."

Aufruf:

.\person.ps1 -Name "Felix" -Alter 30

Hier sind:

TeilBedeutung
-NameParameter für den Namen
"Felix"Wert für den Namen
-AlterParameter für das Alter
30Wert für das Alter

Pflichtparameter in eigenen Skripten

Man kann Parameter als verpflichtend kennzeichnen.

Beispiel:

param(
    [Parameter(Mandatory=$true)]
    [string]$Name
)

Write-Output "Hallo $Name"

Wenn der Parameter -Name beim Start fehlt, fragt PowerShell nach.


Parameter mit Standardwert

Parameter können Standardwerte besitzen.

Beispiel:

param(
    [string]$Name = "Benutzer"
)

Write-Output "Hallo $Name"

Wenn kein Name angegeben wird, verwendet PowerShell automatisch Benutzer.


Parameter validieren

PowerShell kann Parameterwerte prüfen.

Beispiel mit erlaubten Werten:

param(
    [ValidateSet("Start","Stop","Restart")]
    [string]$Aktion
)

Write-Output "Gewählte Aktion: $Aktion"

Jetzt darf der Parameter -Aktion nur bestimmte Werte annehmen:

Erlaubter Wert
Start
Stop
Restart

Beispiel:

.\dienst.ps1 -Aktion Start

Ein falscher Wert würde abgelehnt werden.


Typische IHK-relevante Beispiele

Dienst anzeigen

Get-Service -Name "Spooler"

Zeigt den Dienst Spooler an.


Dienst starten

Start-Service -Name "Spooler"

Startet den Dienst Spooler.


Dienst stoppen

Stop-Service -Name "Spooler"

Stoppt den Dienst Spooler.


Prozess anzeigen

Get-Process -Name "notepad"

Zeigt den Prozess notepad an.


Prozess beenden

Stop-Process -Name "notepad"

Beendet den Prozess notepad.


Dateien in einem Ordner anzeigen

Get-ChildItem -Path "C:\Temp"

Zeigt den Inhalt des Ordners C:\Temp an.


Dateien rekursiv suchen

Get-ChildItem -Path "C:\Temp" -Filter "*.log" -Recurse

Sucht im Ordner C:\Temp und allen Unterordnern nach .log-Dateien.


Datei löschen mit Sicherheitsprüfung

Remove-Item -Path "C:\Temp\test.txt" -WhatIf

Zeigt an, was gelöscht werden würde, löscht aber nicht wirklich.


Datei löschen mit Bestätigung

Remove-Item -Path "C:\Temp\test.txt" -Confirm

Fragt vor dem Löschen nach.


Wichtige Begriffe

BegriffErklärung
CmdletPowerShell-Befehl im Verb-Nomen-Schema
ParameterZusatzangabe zu einem Cmdlet
ParameterwertKonkreter Wert zu einem Parameter
SchalterparameterParameter ohne eigenen Wert
PflichtparameterMuss angegeben werden
Optionaler ParameterKann angegeben werden, muss aber nicht
Positioneller ParameterKann ohne Parameternamen verwendet werden
PipelineÜbergibt Objekte von einem Befehl zum nächsten
Common ParametersGemeinsame Standardparameter vieler Cmdlets
AliasKurzname für ein Cmdlet

Häufige Fehler

FehlerErklärung
Parameter falsch geschriebenPowerShell erkennt den Parameter nicht
Wert fehltEin Parameter erwartet einen Wert
Falscher DatentypZum Beispiel Text statt Zahl
Pfad ohne AnführungszeichenFehler bei Leerzeichen im Pfad möglich
Zu gefährlicher Befehl ohne -WhatIfAktion wird direkt ausgeführt
Alias statt Cmdlet in DokumentationKann unklar oder weniger professionell wirken

Gute Praxis

EmpfehlungGrund
Parameter ausschreibenBessere Lesbarkeit
Cmdlets statt Aliase verwendenEindeutiger und professioneller
Bei gefährlichen Befehlen -WhatIf nutzenVerhindert versehentliche Änderungen
Pfade mit Leerzeichen in Anführungszeichen setzenVermeidet Fehler
Get-Help nutzenParameter müssen nicht auswendig gelernt werden
Befehle erst testenBesonders bei Löschen, Stoppen oder Ändern

IHK-Einordnung

Für die IHK ist vor allem wichtig, dass man das Prinzip versteht.

Man muss normalerweise nicht jeden Parameter auswendig kennen.

Wichtig ist:

Prüfungsrelevanter PunktErklärung
Cmdlet erkennenPowerShell-Befehl verstehen
Parameter erkennenZusatzangabe zum Befehl erkennen
Parameterwert erkennenKonkreten Wert zuordnen
Schalterparameter verstehenParameter ohne eigenen Wert
Pipeline verstehenAusgabe eines Befehls wird weitergegeben
Sichere Ausführung verstehen-WhatIf und -Confirm kennen
Hilfe verwenden könnenGet-Help und Get-Command kennen

Prüfungsnahes Beispiel

Aufgabe:

Ein Administrator möchte alle Textdateien im Ordner C:\Temp und dessen Unterordnern anzeigen lassen.

Passender PowerShell-Befehl:

Get-ChildItem -Path "C:\Temp" -Filter "*.txt" -Recurse

Erklärung:

TeilBedeutung
Get-ChildItemOrdnerinhalt anzeigen
-Path "C:\Temp"Startordner festlegen
-Filter "*.txt"Nur Textdateien anzeigen
-RecurseUnterordner einbeziehen

Prüfungsnahes Beispiel mit Sicherheit

Aufgabe:

Ein Administrator möchte prüfen, welche Dateien durch einen Löschbefehl betroffen wären, ohne sie wirklich zu löschen.

Passender PowerShell-Befehl:

Remove-Item -Path "C:\Temp\*.log" -WhatIf

Erklärung:

TeilBedeutung
Remove-ItemElemente löschen
-Path "C:\Temp*.log"Alle .log-Dateien im Zielpfad
-WhatIfNur anzeigen, was passieren würde

Zusammenfassung

Parameter sind ein zentrales Konzept in PowerShell.

Sie steuern, wie ein Cmdlet arbeitet und auf welche Objekte es angewendet wird.

Die wichtigsten Punkte:

PunktKurz erklärt
Parameter steuern CmdletsSie machen Befehle genauer
Manche Parameter brauchen WerteZum Beispiel -Name "Spooler"
Schalterparameter brauchen keinen WertZum Beispiel -Recurse oder -Force
Parameter können kombiniert werdenDadurch entstehen gezielte Befehle
-WhatIf und -Confirm erhöhen die SicherheitBesonders bei gefährlichen Aktionen
Get-Help zeigt verfügbare ParameterMan muss nicht alles auswendig kennen
Die Pipeline übergibt Objekte weiterCmdlets können miteinander kombiniert werden

Kurzer Merksatz

Ein Parameter ist eine Zusatzangabe zu einem PowerShell-Cmdlet, mit der festgelegt wird, worauf und wie der Befehl angewendet wird.

Beispiel:

Get-Service -Name "Spooler"

Get-Service ist das Cmdlet.
-Name ist der Parameter.
"Spooler" ist der Parameterwert.