2012-02-01 5 views
6

powershell에서 $ MyInvocation.InvocationName을 제외하고 다른 방법으로 스크립트 이름을 구할 수 있습니까? 나는 exe에서 내 스크립트를 돌릴 필요가 있고 그 경우에는 그 exe에서 작동하지 않는다.Powershell에서 스크립트 이름 가져 오기

+0

exe를 호출하는 방법과 스크립트 이름을 전달하는 방법은 무엇입니까? –

+0

유틸리티를 사용하여 스크립트를 exe로 변환합니다. 기능은 스크립트로 잘 작동하지만 스크립트 대신 exe를 사용하면 작동하지 않습니다. –

+0

내가 알고있는 유일한 방법은 $ Myinvocation을 사용하는 것입니다. 아마 유틸리티 (PS2EXE 어쩌면 ??) exe 또는 그의 인클로저를 참조하는 PSCmdlet.MyInvocation 속성을 변환 할 수 없습니다. –

답변

11

실행 파일의 위치 다음에있는 실행 파일로 powershell 스크립트를 변환한다고 가정합니다. 당신은이 방법으로 얻을 수 있습니다. 당신이 내 및 ISE의 ​​외부에서 작동하는 무언가를 원하는 경우에

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

글쎄 그게 와트 였어. 실제로 존 J을 많이 고맙다고 생각 했어. :) –

+2

fwiw - ISE에서 이것을 디버깅 할 경우 스크립트 이름이 두 번째 매개 변수가됩니다 :'[Environment] :: GetCommandLineArgs() [1]' –

0

하면 전체 경로와 이후

$MyInvocation.InvocationName 

를 사용할 수 YourScript.ps1 반환 할 수있다 \ 당신이 구문 분석 할 수 이름 :

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