如果__name__ =='__ main__',则为Powershell等效的python:

Mar*_*ino 11 powershell

我真的很喜欢python做这样的事情的能力:

if __name__ == '__main__':
    #setup testing code here
    #or setup a call a function with parameters and human format the output
    #etc...
Run Code Online (Sandbox Code Playgroud)

这很好,因为我可以将Python脚本文件视为可以从命令行调用的东西,但它仍然可以轻松地将其函数和类导入到单独的python脚本文件中,而不会触发默认的"从命令行运行"行为".

Powershell有类似的设施,我可以利用吗?如果不是,我应该如何组织我的函数文件库,这样我可以在开发它时轻松执行其中的一些?

Bac*_*its 7

$MyInvocation.Invocation 有关于脚本如何启动的信息。

If ($MyInvocation.InvocationName -eq '&') {
    "Called using operator: '$($MyInvocation.InvocationName)'"
} ElseIf ($MyInvocation.InvocationName -eq '.') {
    "Dot sourced: '$($MyInvocation.InvocationName)'"
} ElseIf ((Resolve-Path -Path $MyInvocation.InvocationName).ProviderPath -eq $MyInvocation.MyCommand.Path) {
    "Called using path: '$($MyInvocation.InvocationName)'"
}
Run Code Online (Sandbox Code Playgroud)


Ric*_*ard 5

$MyInvocation有很多关于当前上下文和呼叫者的信息.也许这可以用于检测脚本是否是点源(即导入)或作为脚本执行.

脚本可以像函数一样:将文件param中的第一个非公共/空白用作定义的参数.目前尚不清楚(人们需要尝试不同的组合)如果你点源一个开始的脚本会发生什么param

模块可以直接执行代码以及导出函数,变量......并且可以获取参数.也许$MyInvocation在一个模块中可以检测到两个案例.

编辑:附加:

$MyInvocation.Line包含用于执行当前脚本或函数的命令行.它的Line属性具有用于执行.的脚本文本,当点源时它将以" " 开头但不是作为脚本运行(显然是使用正则表达式匹配以允许周期内的变量空格的情况).

在作为函数运行的脚本中