Как передать имя командлета или функции в качестве параметра в powershell - PullRequest
0 голосов
/ 27 апреля 2020

Как передать имя командлета или функции в качестве параметра:

Write-Host "hi" | get-help <write-host>
# or
My-Custom-Function -arguments $some_arg | get-help <My-Custom-Function>

1 Ответ

0 голосов
/ 27 апреля 2020

Самый популярный способ передачи параметров в функцию - это создать хеш-таблицу со всеми параметрами, которые вы хотите предоставить.

Возьмем этот пример, например, для вывода списка всех дисков определенного типа. на моем компьютере.

Get-CimInstance -Namespace root\cimv2 `
  -ClassName Win32_DiskDrive `
  -Filter "Caption='Samsung SSD 960 EVO 500GB'"

Вид длинной команды, верно? Я могу сделать хеш-таблицу, чтобы включить все эти значения.

$params = @{
    Namespace = "root\cimv2"; 
    ClassName = "Win32_DiskDrive";
    Filter= "Caption='Samsung SSD 960 EVO 500GB'"
}

Затем мы go, чтобы вызвать его, обратите внимание на символ @, используемый вместо символа обычной переменной, $.

Get-CimInstance @params

Если Вы спрашиваете Зачем мне это делать? , вы видите, что это очень часто делается в функциях, которые предлагают удаленную функциональность. Хеш-таблица будет построена, а затем изменена на основе параметров, предоставленных или указанных в среде PowerShell, а затем передана действующему командлету для выполнения фактической функции.

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