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