gpt4 book ai didi

powershell - 从 Process block 调用函数

转载 作者:行者123 更新时间:2023-12-02 22:31:30 30 4
gpt4 key购买 nike

我想从我的 PowerShell 脚本的 Process 和 End block 中调用特定函数。这是最少的代码:

# MyScript.ps1

function MyFunc
{
"hello"
}

Begin
{
}

Process
{
MyFunc
}

End
{
MyFunc
}

但是这段代码并没有执行。我收到此错误:

Begin : The term 'Begin' is not recognized as the name of a cmdlet, function, script file, or operable program.

最佳答案

begin/process/end(和dynamic) block 可以仅用作唯一顶级结构:

  • 脚本文件 (*.ps1)

  • 在一个函数中

在这两种情况下,都不允许使用其他顶级代码(除了顶部的 param(...) 参数声明 block ),这是脚本放置的约束-内部 MyFunc 函数违规。

如果您希望您的脚本使用内部辅助函数,请将它放在begin block 中 - 您将能够从进程中调用它/end block 根据需要:

Begin {
function MyFunc {
"hello"
}
}

Process {
MyFunc
}

End {
MyFunc
}

以上结果:

hello
hello

也就是说,processend block 都成功调用了嵌套在 begin 中的 MyFunc 函数 block 。

通常,请注意begin/process/end block 共享相同的本地范围,这也适用于变量,因此,类似地,您可以在begin block 中初始化脚本/函数局部变量,并在process block 中访问它,例如。
出于同样的原因,嵌套函数(例如此处的 MyFunc)对于封闭脚本/函数而言是本地的。

关于powershell - 从 Process block 调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51586453/

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