Ви можете написати фільтр, який є особливим випадком функції:
filter SquareIt([int]$num) { $_ * $_ }
або ви можете створити подібну функцію приблизно так:
function SquareIt([int]$num) {
Begin {
}
Process {
$_ * $_
}
End {
}
}
Вищезазначене працює як визначення інтерактивної функції або якщо скрипт може бути розміщений у вашій глобальній сесії (або іншому сценарії). Однак у вашому прикладі вказано, що ви хочете скрипт, тому тут він знаходиться у сценарії, який можна використовувати безпосередньо (крапка не потрібна):
--- Contents of test.ps1 ---
param([int]$num)
Begin {
}
Process {
$_ * $_
}
End {
}
У PowerShell V2 це трохи змінюється завдяки "розширеним функціям", які надають функції з тими ж функціями прив'язки параметрів, що й у компільованих командлетах. Див. Цю публікацію в блозі для прикладу відмінностей. Також зверніть увагу, що в цьому випадку розширених функцій ви не використовуєте $ _ для доступу до об'єкта конвеєра. За допомогою розширених функцій об'єкти конвеєра прив'язуються до параметрів так само, як це робиться з командлетом.