【问题标题】:Get Selected Properties of Parameters of a Powershell CmdLet获取 Powershell CmdLet 参数的选定属性
【发布时间】:2017-03-07 23:01:38
【问题描述】:

给定任何 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
        },
...
]

【问题讨论】:

    标签: powershell select-object


    【解决方案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
            },
            ...
    ]
    

    【讨论】:

    • 这里不需要foreach
    猜你喜欢
    • 2011-06-23
    • 1970-01-01
    • 2023-04-10
    • 2020-10-12
    • 1970-01-01
    • 1970-01-01
    • 2010-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多