2012-02-01 28 views
6

¿Hay alguna otra manera que no sea $ MyInvocation.InvocationName en powershell para obtener el nombre del script? Como necesito convertir mi script en un exe y en ese caso no funciona en ese exe.Obteniendo el nombre del script en Powershell

+0

¿Cómo se llama al exe y cómo se pasa el nombre del script? –

+0

Convierto el script en exe usando una utilidad ... la funcionalidad funciona bien con el script, pero si utilizo el exe en lugar del script, no funciona ... –

+0

La única forma que conozco es usando $ Myinvocation. Tal vez la utilidad (PS2EXE quizás§ ??) no puede convertir la propiedad PSCmdlet.MyInvocation en referencia a un exe o su gabinete. –

Respuesta

11

Supongo que desde que convierte el script de powershell a un ejecutable está buscando la ubicación del ejecutable. Se puede conseguir de esta manera:.

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

Bueno, eso funcionó, es que en realidad quería saber muchas gracias jon Z .. :) –

+2

fwiw - Si está depurando esto en ISE, el nombre del script se convierte en el segundo parámetro: '[Environment] :: GetCommandLineArgs() [1]' –

0

Si quieres algo que funciona dentro y fuera del ISE se puede utilizar

$MyInvocation.InvocationName 

Desde rutas completas y \ YourScript.ps1 puede ser devuelto puede analizar el nombre con:

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