Думайте о файле как о большой функции с расширением файла, вы можете назначать параметры файлу с помощью param так же, как вы можете с функцией, с этим вы также можете использовать [CmdletBinding()]
для файлов, как вы можете в функциях . Например, если у меня есть файл с несколькими переключателями и может принимать аргументы, я мог бы сделать что-то вроде
[CmdletBinding()]
param([switch]$a,
[string]$b)
if ($a) {return Write-Host $b -ForegroundColor red}
return Write-Host $b
Было бы то же самое, что и
function MyName {
[CmdletBinding()]
param([switch]$a
[string]$b)
if ($a) {return Write-Host $b -ForegroundColor red}
return Write-Host $b
}
, и вы могли бы вызвать их с помощью
#file
.\MyName.ps1 -a -b Test
или
#function
MyName -a -b Test
, и они будут иметь одинаковый вывод. Красный Test
В отличие от командных файлов (.bat
) вы не можете напрямую вызовите сценарий ps1
только с его именем, поэтому простое использование MyName -a -b Test
без определенной функции приведет к ошибке.