Я пытаюсь найти способ получить всю информацию о параметрах из powershell script. Ex script:
function test()
{
Param(
[string]$foo,
[string]$bar,
[string]$baz = "baz"
)
foreach ($key in $MyInvocation.BoundParameters.keys)
{
write-host "Parameter: $($key) -> $($MyInvocation.BoundParameters[$key])"
}
}
test -foo "foo!"
Я хотел бы получить значения $bar
и $baz
динамически, не зная имена параметров раньше времени.
Я просмотрел свойства и методы $MyInvocation
, но я не вижу ничего, кроме параметров, которые установлены/переданы.
Обновление 1:
Я близок к тому, чтобы получить его:
function test()
{
Param(
[string]$foo,
[string]$bar,
[string]$baz = "baz"
)
foreach($var in (get-variable -scope private))
{
write-host "$($var.name) -> $($var.value)"
}
}
test -foo "foo!"
Если бы я мог отфильтровать параметры script и параметры по умолчанию, мне было бы хорошо идти.
Обновление 2: Окончательное рабочее решение выглядит следующим образом:
function test {
param (
[string] $Bar = 'test'
, [string] $Baz
, [string] $Asdf
)
$ParameterList = (Get-Command -Name $MyInvocation.InvocationName).Parameters;
foreach ($key in $ParameterList.keys)
{
$var = Get-Variable -Name $key -ErrorAction SilentlyContinue;
if($var)
{
write-host "$($var.name) > $($var.value)"
}
}
}
test -asdf blah;