gpt4 book ai didi

powershell - 具有动态函数名称的调用命令

转载 作者:行者123 更新时间:2023-12-04 23:04:56 24 4
gpt4 key购买 nike

我发现了这个很棒的帖子:Using Invoke-Command -ScriptBlock on a function with arguments

我正在尝试使函数调用( ${function:Foo} )动态化,因为我想传递函数名称。

我试过这个:

$name = "Foo"
Invoke-Command -ScriptBlock ${function:$name}

但这失败了。我还尝试了各种转义序列,但无法将函数名称设为动态。

编辑:为清楚起见,我添加了一个小的测试脚本。当然想要的结果是调用 ExternalFunction .
Function ExternalFunction()
{
write-host "I was called externally"
}

Function InternalFunction()
{
Param ([parameter(Mandatory=$true)][string]$FunctionName)
#working: Invoke-Command -ScriptBlock ${function:ExternalFunction}
#not working: Invoke-Command -ScriptBlock ${invoke-expression $FunctionName}
if (Test-Path Function:\$FunctionName) {
#working,but how to use it in ScriptBlock?
}
}

InternalFunction -FunctionName "ExternalFunction"

最佳答案

替代解决方案:

function foo {'I am foo!'}

$name = 'foo'

$sb = (get-command $name -CommandType Function).ScriptBlock
invoke-command -scriptblock $sb

我是福!

关于powershell - 具有动态函数名称的调用命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14789602/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com