2012-02-01 20 views
6

C'è un altro modo tranne $ MyInvocation.InvocationName in powershell per ottenere il nome dello script? Come ho bisogno di trasformare il mio script in un exe e in tal caso non funziona su quel exe.Acquisisci il nome dello script in PowerShell

+0

Come si chiama l'exe e come si passa il nome dello script? –

+0

Converto lo script in exe utilizzando un'utilità..la funzionalità funziona bene con lo script ma se uso l'exe al posto dello script non funziona .. –

+0

L'unico modo che conosco è usare $ Myinvocation. Forse l'utilità (PS2EXE forse§ ??) non può convertire la proprietà PSCmdlet.MyInvocation riferendosi a un exe o al suo allegato. –

risposta

11

Sto assumendo poiché si converte lo script PowerShell in un eseguibile che si trova dopo la posizione dell'eseguibile. È possibile ottenere in questo modo:.

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

Beh, quello che ha funzionato è wat che volevo davvero grazie mille jon Z .. :) –

+2

fwiw - se si esegue il debug di questo in ISE, il nome dello script diventa il secondo parametro: '[Environment] :: GetCommandLineArgs() [1]' –

0

Se si desidera qualcosa che funziona all'interno e al di fuori di ISE è possibile utilizzare

$MyInvocation.InvocationName 

Dal percorsi completi e \ YourScript.ps1 possono essere restituiti è possibile analizzare il nome con:

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