2012-02-01 19 views
6

スクリプト名を取得するためにpowershellの$ MyInvocation.InvocationName以外の方法はありますか? 私はexeで私のスクリプトを有効にする必要があり、その場合は、そのexeで動作しません。Powershellでスクリプト名を取得する

+0

どのようにexeを呼び出すと、どのようにスクリプト名を渡しますか? –

+0

私はユーティリティを使用してスクリプトをexeに変換します。機能はスクリプトでうまく動作しますが、スクリプトの代わりにexeを使用すると、それは動作しません。 –

+0

私が知っている唯一の方法は$ Myinvocationです。たぶんユーティリティ(PS2EXEおそらく§??)は、exeまたはそのエンクロージャを参照しているPSCmdlet.MyInvocationプロパティを変換できません。 –

答えて

11

実行可能ファイルの場所の後にある実行可能ファイルにpowershellスクリプトを変換するので、私は仮定しています。あなたはISEの内と外で働く何かをしたい場合は、完全なパスので

$MyInvocation.InvocationName 

を使用することができます

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

これはうまくいきました。私は実際に感謝したくありました。:) –

+2

fwiw - これをISEでデバッグする場合、スクリプト名は2番目のパラメータになります: '[Environment] :: GetCommandLineArgs()[1]' –

0

と\ YourScript.ps1はあなたが解析できる返すことができます:あなたはそれをこのように得ることができます。名前は:

[Regex]::Match($MyInvocation.InvocationName, '[^\\]+\Z', [System.Text.RegularExpressions.RegexOptions]::IgnoreCase -bor [System.Text.RegularExpressions.RegexOptions]::SingleLine).Value 
関連する問題