Принять произвольные параметры в 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.

Другие вопросы по тегам