PowerShell - 调用在另一个函数中创建的函数

Dst*_*tr0 3 windows powershell scope function

当我运行这个:

function Setup-One{

    function First-Function{
    Write-Host "First function!"
    }

    function Second-Function{
    Write-Host "Second function!"
    }
}
Setup-One
Run Code Online (Sandbox Code Playgroud)

然后我打电话给First-Functionor Second-Function,PS 说它们不存在。我究竟做错了什么?

Mat*_*sen 9

函数定义是有作用域的,这意味着当您离开定义它们的作用域时,它们将不再存在。

.调用时使用点源运算符Setup,从而在调用范围内持久化嵌套函数:

function Setup-One{

    function First-Function{
    Write-Host "First function!"
    }

    function Second-Function{
    Write-Host "Second function!"
    }
}
. Setup-One

# Now you can resolve First-Function/Second-Function
First-Function
Second-Function
Run Code Online (Sandbox Code Playgroud)

有关PowerShell 范围界定的更多信息,请参阅about_Scopes帮助主题

  • 或者,“Setup-One”内的“function global:First-Function”会覆盖每个声明的范围(更方便的方法取决于您打算公开的程度)。 (4认同)