Получить выбранные свойства параметров Powershell CmdLet
Для любого командлета (Powershell v3) я хочу получить список параметров только с выбранными свойствами (например, имя и тип). Вывод в формате JSON должен выглядеть примерно так:
[
{
"Name": "Path",
"ParameterType": "string"
},
{
"Name": "Filter",
"ParameterType": "string"
},
{
"Name": "Recurse",
"ParameterType": "switch"
}
]
У меня есть коллекция параметров, но я не могу выбрать только те параметры, которые я хочу:
$cmd = gcm Get-ChildItem
$parameters = $cmd.Parameters.Values
for($i=0; $i -lt $parameters.Count; $i++) {
$parameters[$i] = Select-Object Name,ParameterType -InputObject $parameters[$i]
}
$parameters | ConvertTo-JSON -depth 1
Я получаю все параметры:
[
{
"Name": "Path",
"ParameterType": "string",
"ParameterSets": "System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.ParameterSetMetadata]",
"IsDynamic": false,
"Aliases": "",
"Attributes": "System.Management.Automation.ParameterAttribute System.Management.Automation.ArgumentTypeConverterAttribute",
"SwitchParameter": false
},
{
"Name": "Filter",
"ParameterType": "string",
"ParameterSets": "System.Collections.Generic.Dictionary`2[System.String,System.Management.Automation.ParameterSetMetadata]",
"IsDynamic": false,
"Aliases": "",
"Attributes": "System.Management.Automation.ParameterAttribute System.Management.Automation.ArgumentTypeConverterAttribute",
"SwitchParameter": false
},
...
]
1 ответ
Решение
$cmd = gcm Get-ChildItem
$cmd.Parameters.Values |
Select Name,ParameterType,SwitchParameter |
ConvertTo-Json -depth 1
Результат:
[
{
"Name": "Path",
"ParameterType": "string[]",
"SwitchParameter": false
},
{
"Name": "LiteralPath",
"ParameterType": "string[]",
"SwitchParameter": false
},
{
"Name": "Filter",
"ParameterType": "string",
"SwitchParameter": false
},
...
]