Принять произвольные параметры в C# PSCmdlet
Я написал несколько классов, которые обращаются к API и получают JSON. При компиляции я получаю хорошие команды, такие как get-host, get-version, get-app и т. Д.
Каждый командлет принимает аргумент, например -host или -app.
У меня есть около 160 из них, которые я могу написать, но сейчас я хочу написать более общий командлет, который может принимать произвольные параметры и значения.
Из того, что я вижу, я не могу объявить параметры как таковые, где я могу выдать
get-info -app "appname"
или же
get-info -host "hostname"
или же
get-info -version "5.5"
если я не объявлю все параметры, которых могут быть сотни. Кроме того, если параметр не объявлен, выдается хорошая ошибка.
Get-Info: Невозможно найти параметр, который соответствует имени параметра 'host'.
Есть ли способ, которым я не могу объявить какие-либо параметры и затем анализировать аргументы вручную, или есть что-то в C#, чтобы автоматически анализировать список аргументов и затем назначать их переменным, названным соответствующим образом?
например
get-info -host "hostname" -backup "backupid"
а переменные host и backup будут установлены автоматически?
1 ответ
Примите ваши произвольные параметры как HashTable
:
get-mydata @{ Host = "hostname"; version = "1.0" }
Именно так большинство встроенных командлетов обрабатывают произвольные KVP.