次の関数を検討してください
Function IfFunctionExistsExecute
{
param ([parameter(Mandatory=$true)][string]$func)
begin
{
# ...
}
process
{
if(Get-Command $func -ea SilentlyContinue)
{
& $func # the amperersand invokes the function instead of just printing the variable
}
else
{
# ignore
}
}
end
{
# ...
}
}
使用法:
Function Foo { "In Foo" }
IfFunctionExistsExecute Foo
これは機能します。
ただし、これは機能しません。
Function Foo($someParam)
{
"In Foo"
$someParam
}
IfFunctionExistsExecute Foo "beer"
しかし、これは私に醜いエラーを与えます:
IfFunctionExistsExecute : A positional parameter cannot be found that accepts argument 'beer'.
At C:\PSTests\Test.ps1:11 char:24
+ IfFunctionExistsExecute <<<< Foo "beer"
+ CategoryInfo : InvalidArgument: (:) [IfFunctionExistsExecute], ParameterBindingException
+ FullyQualifiedErrorId : PositionalParameterNotFound,IfFunctionExistsExecute
PSでこれを行うにはどうすればよいですか?