确定PowerShell脚本是否在主作用域启动?
我是一名刚开始学习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。