Получить выбранные свойства параметров 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
        },
        ...
]
Другие вопросы по тегам