2012-02-01 138 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 
相關問題