PowerShell: DynamicParam: получить список переданных параметров?
Добрый день
К сожалению, PowerShell не может обнаружить ParameterSet по типам параметров, например: если 2-й параметр передается как Int, то выберите ParameterSet1, в противном случае используйте ParameterSet2.
Поэтому я хотел бы вручную определить переданные комбинации параметров.
Можно ли получить список переданных параметров в DynamicParam
, что-то вроде этого?:
Function Log {
[CmdletBinding()]
Param ()
DynamicParam {
# Is is possible to access the passed Parameters?,
# something like that:
If (Args[0].ParameterName -eq 'Message') { … }
# Or like this:
If (Args[0].Value -eq '…') { … }
}
…
}
Большое спасибо за любую помощь и свет!
Томас
1 ответ
Это первое обнаружение было неверным!: "Я нашел магию, используя $PSBoundParameters
мы можем получить доступ к переданным параметрам."
Это правильный, но очень неутешительный ответ:
Это очень раздражает и невероятно, но похоже, что PowerShell не передает никакой информации о динамически передаваемых аргументах.
В следующем примере используется New-DynamicParameter
Функция, как определено здесь: Могу ли я сделать набор параметров в зависимости от значения другого параметра?
Function Test-DynamicParam {
[CmdletBinding()]
Param (
[string]$FixArg
)
DynamicParam {
# The content of $PSBoundParameters is just
# able to show the Params declared in Param():
# Key Value
# --- -----
# FixArg Hello
# Add the DynamicParameter str1:
New-DynamicParameter -Name 'DynArg' -Type 'string' -HelpMessage 'DynArg help'
# Here, the content of $PSBoundParameters has not been adjusted:
# Key Value
# --- -----
# FixArg Hello
}
Begin {
# Finally - but too late to dynamically react! -
# $PSBoundParameters knows all Parameters (as expected):
# Key Value
# --- -----
# FixArg Hello
# DynArg World
}
Process {
…
}
}
# Pass a fixed and dynamic parameter
Test-DynamicParam -FixArg 'Hello' -DynArg 'World'