Как работает CmdletBinding () поверх файла .ps1? - PullRequest
0 голосов
/ 06 августа 2020

Рассмотрим пример кода PowerShell здесь :

код PowerShell

Он имеет [CmdletBinding()] поверх scipt-файла .ps1.

Обратите внимание, что [CmdletBinding ()] находится поверх файла, а не функция .

Как мне вызвать этот файл из командной строки и присвоить значения параметрам?

Как называется этот метод, чтобы я мог найти и узнать больше о концепции?

1 Ответ

1 голос
/ 08 августа 2020

Думайте о файле как о большой функции с расширением файла, вы можете назначать параметры файлу с помощью 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 без определенной функции приведет к ошибке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...