【问题标题】:Accept arbitrary parameters in c# PSCmdlet在 c# PSCmdlet 中接受任意参数
【发布时间】:2014-10-23 15:57:08
【问题描述】:

我编写了一堆类,这些类可以访问 API 并获取 JSON。编译后,我会得到不错的命令,例如 get-host、get-version、get-app 等。

每个 cmdlet 都有一个参数,例如 -host 或 -app。

我可以编写大约 160 个这样的命令,但我现在希望编写一个更通用的 cmdlet,它可以接受任意参数和值。

据我所知,我无法在可以发出的地方声明参数

get-info -app "appname"

get-info -host "hostname"

get-info -version "5.5"

除非我声明所有可能有数百个的参数。另外,如果参数没有声明,它会抛出一个很好的错误

Get-Info : 找不到与参数名称“主机”匹配的参数。

有没有办法我不能声明任何参数,然后手动解析参数,或者 c# 中有什么东西可以自动解析参数列表,然后将它们分配给适当命名的变量?

例如

get-info -host "hostname" -backup "backupid"

变量host和backup会自动设置吗?

【问题讨论】:

    标签: c# variables arguments powershell-cmdlet


    【解决方案1】:

    接受您的任意参数作为HashTable

    get-mydata @{ Host = "hostname"; version = "1.0" }
    

    这就是大多数内置 cmdlet 处理任意 KVP 的方式。

    【讨论】:

    • 这是个好主意。我会试一试。我希望我不需要将它作为一个哈希表来做,但我认为这是一个“包罗万象”的 cmdlet 的绝佳选择。
    • 谢谢!效果很好。实际上,我有一个函数可以像正常一样读取参数,然后该函数从中创建一个哈希表并调用通用 cmdlet。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 2022-06-15
    • 2015-08-14
    • 1970-01-01
    • 2011-04-04
    • 1970-01-01
    • 2018-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多