Sie können entweder einen Filter schreiben, der ein Sonderfall einer Funktion wie der folgenden ist:
filter SquareIt([int]$num) { $_ * $_ }
oder Sie können eine ähnliche Funktion wie folgt erstellen:
function SquareIt([int]$num) {
Begin {
}
Process {
$_ * $_
}
End {
}
}
Das Obige funktioniert als interaktive Funktionsdefinition oder wenn in einem Skript in Ihrer globalen Sitzung (oder einem anderen Skript) gepunktet werden kann. In Ihrem Beispiel wurde jedoch angegeben, dass Sie ein Skript wünschen, sodass es sich hier um ein Skript handelt, das direkt verwendet werden kann (keine Punktierung erforderlich):
--- Contents of test.ps1 ---
param([int]$num)
Begin {
}
Process {
$_ * $_
}
End {
}
Mit PowerShell V2 ändert sich dies ein wenig mit "erweiterten Funktionen", die Funktionen mit denselben Parameterbindungsfunktionen wie kompilierte Cmdlets enthalten. In diesem Blogbeitrag finden Sie ein Beispiel für die Unterschiede. Beachten Sie auch, dass Sie in diesem Fall mit erweiterten Funktionen nicht $ _ verwenden, um auf das Pipeline-Objekt zuzugreifen. Mit erweiterten Funktionen werden Pipeline-Objekte wie bei einem Cmdlet an einen Parameter gebunden.