Zum Hauptinhalt springen

Splatting

Ein Nachteil am Konzept der Powershell-Parameterbezeichnung ist, dass ein Kommando schnell über das Zeilenende hinauswachsen kann und dann sehr unübersichtlich wird. Seit Powershell 3 kann man dem mit Splatting entgegenwirken. Beim Splatting fassen Sie die Parameter eines Kommandos in einer Hash-Table zusammen, wobei die Parameternamen den Schlüsselnamen entsprechen, und die Werte die Argumente beinhalten.

Get-EventLog -LogName Application -EntryType Error,Warning -After '2018-03-01'

 können Sie auch so aufrufen:

$Parameter = @{
   Logname = "Application" 
   EntryType = "Error","Warning" 
   After = get-Date.Addhours(-12)
}
Get-EventLog @Parameter # Achtung, die Variable wird mit einem @ übergeben!

 Die Parameter Logname,Entrytype und After werden erst ein einer Hash-Table definiert und dann mit @Parameter an das Kommando übergeben.

Die Variable $Parameter wird mit @Parameter übergeben. Das ist wichtig, damit Powershell weiß, dass es sich nicht um den Wert für den ersten Positionsparameter handelt, und versucht, die komplette Variable an diesen zu übergeben. Mit @ wird eindeutig angegeben, dass es sich um mehrere Parameter handelt, die ausgewertet und in die gleichnamigen (!) Parameter eingefügt werden müssen.

 Neben der Hash-Table können Sie auch auf die herkömmliche Weise weitere Parameter übergeben:

Get-EventLog @Parameter -Source VSS