接受c#PSCmdlet中的任意参数

本文关键字:任意 参数 c#PSCmdlet 接受 | 更新日期: 2023-09-27 18:27:31

我编写了一组类,它们可以访问API并获得JSON。当编译时,我会得到一些不错的命令,比如获取主机、获取版本、获取应用程序等。

每个cmdlet都接受一个参数,如-host或-app。

我已经有大约160个这样的东西可以写了,但我现在想写一个更通用的cmdlet,可以接受任意的参数和值。

据我所见,我不能在可以发布的地方声明参数

get-info -app "appname"

get-info -host "hostname"

get-info -version "5.5"

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

获取信息:找不到与参数名称"host"匹配的参数。

有没有一种方法可以不声明任何参数,然后手动解析参数,或者c#中有没有一个方法可以自动解析参数列表,然后将它们分配给适当命名的变量?

例如

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

主机和备份变量会自动设置吗?

接受c#PSCmdlet中的任意参数

接受任意参数作为HashTable:

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

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