PowerShell-调用在另一个函数中创建的函数
当我运行这个:
function Setup-One{
function First-Function{
Write-Host "First function!"
}
function Second-Function{
Write-Host "Second function!"
}
}
Setup-One
然后我打电话给First-Functionor Second-Function,PS 说它们不存在。我究竟做错了什么?
回答
函数定义是有作用域的,这意味着当您离开定义它们的作用域时,它们将不再存在。
.调用时使用点源运算符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
有关PowerShell 范围界定的更多信息,请参阅about_Scopes帮助主题
- Alternatively, `function global:First-Function` inside `Setup-One` overrides the scope on a per-declaration basis (what's more convenient varies by how much you intend to expose).