Cuando se encuentra en una función, puede acceder a la variable automática $ PSCmdLet.
Esta es una variable extremadamente útil que contiene mucha información sobre el cmdlet actualmente en ejecución.
En nuestro escenario, queríamos el nombre y la definición de la función actual para algunas recursiones. $ MyInvocation era nulo porque la función estaba dentro de un módulo de PowerShell.
Sin embargo, hay una propiedad "MyInvocation" en el objeto PSCmdLet que contiene toda la información necesaria y permite que se ejecute nuestro escenario.
p. Ej. $ PSCmdlet.MyInvocation.MyCommand.Name = El nombre de la función $ PSCmdlet.MyInvocation.MyCommand.Definition = La definición de la función
que funciona - gracias alguna idea de cómo obtener el nombre de función de llamada? Intenté otras propiedades $ myInvocation pero no veo ninguna. function foo {'Esta función se llama {0}.' -f $ MyInvocation.MyCommand 'Esta persona que llama se llama {0}.' -f $ MyInvocation.? } function CallFoo {foo} CallFoo – alphadev
Si usa PowerShell 2.0, use '(Get-PSCallStack) [1] .Command'. –
Haz esa pregunta por separado, para que la gente pueda encontrarla. La respuesta en v1 está en 'gv -sc $ _ myinvocation'. Ver http://jtruher.spaces.live.com/blog/cns!7143DA6E51A2628D!172.entry –