确定PowerShell脚本是否在主作用域启动?

3 投票
1 回答
738 浏览
提问于 2025-04-17 21:41

我是一名刚开始学习PowerShell的用户,正在写一些脚本文件(.ps1)。

我想知道我的脚本是怎么被调用的:

是作为“主”脚本运行的,还是从另一个文件中被点源(dot sourced)调用的?

在Python中,我会使用类似这样的代码:

if __name__ == "__main__":

在PowerShell中有没有类似的东西呢?

更新

在阅读了答案后,我在我的.ps1文件末尾使用了以下代码:

if ($MyInvocation.InvocationName -ne '.')
{
  # do "main" stuff here
}

任何关于这个可能失败的答案都欢迎提供。

看起来这个问题是重复的,我只是没有使用正确的搜索词:确定PowerShell脚本是否被点源调用

1 个回答

5

如果你想知道这个是怎么被调用的,可以看看$myinvocation这个自动变量。

如果你只是想测试一下自己是否在全局范围内:

Try {if (get-variable args -scope 1){$true}}
Catch {$false}

如果你在一个子范围内,这个测试应该会返回$true。如果你已经在全局范围内,就没有父范围了,这样会报错并返回$false。

撰写回答