2012-02-01 143 views
6

除了PowerShell中的$ MyInvocation.InvocationName获取脚本名称之外,还有其他方法吗? 因为我需要把我的脚本在exe文件中,在这种情况下,它不适用于该exe文件。在Powershell中获取脚本名称

+0

如何调用exe文件以及如何传递脚本名称? – 2012-02-01 11:22:20

+0

我使用实用程序将脚本转换为exe文件。该功能可以与脚本一起使用,但如果我使用exe文件代替脚本,它不起作用。 – 2012-02-01 11:28:39

+0

我知道的唯一方法是使用$ Myinvocation。也许该实用程序(PS2EXE也许§??)不能转换PSCmdlet.MyInvocation属性引用一个EXE或他的附件。 – 2012-02-01 11:47:01

回答

11

我假设自从您将powershell脚本转换为可执行文件的位置之后的可执行文件。你可以这样说:

[Environment]::GetCommandLineArgs()[0] 
+0

那么工作,这是真正的我希望非常感谢JON Z .. :) – 2012-02-02 10:45:21

+2

fwiw - 如果你在ISE中调试这个脚本,脚本名将成为第二个参数:'[Environment] :: GetCommandLineArgs()[1]' – 2013-05-13 18:47:39

0

如果你想要的东西内ISE之外的作品,你可以使用

$MyInvocation.InvocationName 

由于完整路径和\ YourScript.ps1可以返回您可以解析该名称与:

[Regex]::Match($MyInvocation.InvocationName, '[^\\]+\Z', [System.Text.RegularExpressions.RegexOptions]::IgnoreCase -bor [System.Text.RegularExpressions.RegexOptions]::SingleLine).Value 
相关问题