Einführung
Dieser Artikel bietet einen umfassenden PowerShell-Styleguide mit Fokus auf Lesbarkeit, Konsistenz und Best Practices für die Erstellung von sauberen und leicht wartbaren Skripten. Dieser Leitfaden basiert auf dem PowerShell Practice and Style Guide.
Code-Layout & Formatierung
Konsistenz im Layout wahren
Sorgen Sie für einheitliche Einrückungen, Zeilenlängen und Groß-/Kleinschreibung, um die Lesbarkeit zu verbessern.
Groß- und Kleinschreibungsregeln
- Verwenden Sie PascalCase für alle öffentlichen Bezeichner.
- Verwenden Sie lowercase für Sprachschlüsselwörter.
- Verwenden Sie UPPERCASE für Schlüsselwörter in Kommentar-basierten Hilfen.
function Write-Host {
[CmdletBinding()]
param(
[psobject]$Object,
[switch]$NoNewline
)
}
One True Brace Style (OTBS)
Setzen Sie geschweifte Klammern am Ende der Zeile bzw. an den Anfang einer neuen Zeile.
if ($value -gt 0) {
"Positive"
} else {
"Non-Positive"
}
CmdletBinding und Block-Reihenfolge
Beginnen Sie Funktionen mit [CmdletBinding()]
und verwenden Sie die Reihenfolge param()
, begin
, process
, end
.
[CmdletBinding()]
param ()
process { }
end { }
Einrückung
Verwenden Sie vier Leerzeichen pro Einrückungsebene.
foreach ($item in $list) {
Do-Something -Param $item
}
Maximale Zeilenlänge
Begrenzen Sie Zeilen auf 115 Zeichen. Nutzen Sie Splatting oder Klammern für saubere Zeilenumbrüche.
$Params = @{
Name = "Explorer"
Verbose = $true
}
Get-Process @Params
Leerzeilen und Leerzeichen
- Zwei Leerzeilen vor und nach Funktionen.
- Keine Leerzeichen am Zeilenende.
- Ein Leerzeichen um Operatoren und Parameter.
$Value = 5 + 3
Vermeiden Sie Semikolons
Verwenden Sie keine Semikolons als Zeilenabschluss.
$Options = @{
Margin = 2
Padding = 2
}
Funktionen
Basisfunktionen
- Vermeiden Sie
return
. Geben Sie Objekte direkt aus. - Lassen Sie ein Leerzeichen zwischen Funktionsnamen und Parametern.
function MyFunction ($param1, $param2) {
...
}
Erweiterte Funktionen
- Verwenden Sie das Schema
<Verb>-<Noun>
. - Immer
[CmdletBinding()]
nutzen. - Rückgaben im
process {}
Block. - Definieren Sie
OutputType
.
function Get-Example {
[CmdletBinding()]
[OutputType([psobject])]
param (
[int]$Id
)
process {
New-Object -TypeName psobject -Property @{ ID = $Id }
}
}
Dokumentation und Kommentare
Allgemeine Kommentarrichtlinien
- Kommentare aktuell halten.
- Auf Englisch in vollständigen Sätzen schreiben.
- Entscheidungen und Gründe dokumentieren, nicht den Code erklären.
# Rand wegen UI-Anpassung erhöhen
$Margin = $Margin + 2
Blockkommentare
Verwenden Sie #
oder <# ... #>
für längere Kommentare.
<#
.SYNOPSIS
Beispiel für einen Blockkommentar.
#>
Inline-Kommentare
Richten Sie Inline-Kommentare für bessere Lesbarkeit aus.
$Options = @{
Margin = 2 # UI-Anpassung
Padding = 2 # Abstand zum Text
}
Kommentar-basierte Hilfe
Fügen Sie stets eine Hilfe zu Ihren Skripten hinzu.
function Get-Example {
<#
.SYNOPSIS
Beispiel-Daten abrufen.
.EXAMPLE
Get-Example
#>
}
Lesbarkeit
Code einrücken
Innerhalb von Strukturen sauber einrücken.
foreach ($item in $items) {
Process-Item $item
}
Backticks vermeiden
Nutzen Sie Splatting statt Backticks für Zeilenumbrüche.
$Params = @{
Class = "Win32_LogicalDisk"
Filter = "DriveType=3"
}
Get-WmiObject @Params
Namenskonventionen
Verwenden Sie vollständige Befehls- und Parameternamen
Vermeiden Sie Aliase und Abkürzungen.
Get-Process -Name Explorer
Verwenden Sie explizite Pfade
Bevorzugen Sie vollständige Pfade oder $PSScriptRoot
.
Get-Content "$PSScriptRoot\README.md"
Vermeiden Sie die Nutzung von ~
Nutzen Sie ${Env:UserProfile}
anstelle von ~
.
cd ${Env:UserProfile}
Fazit
Die Einhaltung dieser Richtlinien sorgt dafür, dass Ihre PowerShell-Skripte sauber, konsistent und leichter wartbar sind – ideal für die Zusammenarbeit in Teams.
Weitere Informationen finden Sie im PowerShell Practice and Style Guide.