Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 确定Powershell脚本是否已在主作用域中启动?_Python_Powershell - Fatal编程技术网

Python 确定Powershell脚本是否已在主作用域中启动?

Python 确定Powershell脚本是否已在主作用域中启动?,python,powershell,Python,Powershell,我是Powershell的初学者。我正在编写一些脚本文件(.ps1) 我想确定如何调用我的脚本: “主”脚本还是源于另一个文件 在python中,我将使用如下内容: if __name__ == "__main__": PowerShell中有类似的东西吗 更新 阅读答案后,我在.ps1文件末尾使用以下内容: if ($MyInvocation.InvocationName -ne '.') { # do "main" stuff here } 任何包括如何失败的答案都是受欢迎的 这似乎

我是Powershell的初学者。我正在编写一些脚本文件(.ps1)

我想确定如何调用我的脚本:

“主”脚本还是源于另一个文件

在python中,我将使用如下内容:

if __name__ == "__main__":
PowerShell中有类似的东西吗

更新

阅读答案后,我在.ps1文件末尾使用以下内容:

if ($MyInvocation.InvocationName -ne '.')
{
  # do "main" stuff here
}
任何包括如何失败的答案都是受欢迎的

这似乎是一个重复的问题,我只是没有使用正确的搜索词:

如果您想知道它是如何被调用的,请查看$myinvocation自动变量

如果您只想测试您是否在全局范围内:

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

如果在子作用域中运行,则应返回$true。如果您已经在全局作用域中,则没有父作用域,它将抛出错误并返回$false。

@HyperAnthony感谢您的链接。PowerShell是否有与python版本等效的一行程序?我知道PowerShell脚本是自上而下运行的。因此,我想在脚本底部添加一个测试条件,只有通过测试,脚本的其余部分才会运行。谢谢,这似乎是一个很好的信息。你知道$myinvocation.CommandOrigin是否能满足我的需求吗?如果我从powershell启动脚本,我的初步测试似乎显示为“运行空间”,如果另一个脚本正在调用它,则显示为“内部”?我没有找到有关CommandOrigin成员的任何详细信息。我还看到调用名称,它似乎是“.”或脚本名称?也许这是一个更好的方法?我不懂Python,所以我不太确定要告诉您查找什么,这将是Python命令的模拟。谢谢!每个作用域都使用它自己的$args进行初始化,因此它应该始终存在:)。