Lorsque vous êtes dans une fonction, vous pouvez accéder à la variable automatique $ PSCmdLet.
Cette variable extrêmement utile contient de nombreuses informations sur la cmdlet en cours d'exécution.
Dans notre scénario, nous voulions le nom et la définition de la fonction actuelle pour une certaine récursivité. $ MyInvocation était null car la fonction était dans un module PowerShell. Toutefois, il existe une propriété "MyInvocation" sur l'objet PSCmdLet qui contient toutes les informations nécessaires et permet à notre scénario de s'exécuter.
par exemple. $ PSCmdlet.MyInvocation.MyCommand.Name = Le nom de la fonction $ PSCmdlet.MyInvocation.MyCommand.Definition = La définition de la fonction
Cela fonctionne - grâce une idée comment obtenir le nom de la fonction d'appel? J'ai essayé d'autres propriétés $ myInvocation mais je n'en vois pas. function foo {'Cette fonction s'appelle {0}.' -f $ MyInvocation.MyCommand 'Cet appelant s'appelle {0}.' -f $ MyInvocation.? } function CallFoo {foo} CallFoo – alphadev
Si vous utilisez PowerShell 2.0, utilisez '(Get-PSCallStack) [1] .Command'. –
Faites une question distincte pour que les gens puissent la trouver. La réponse dans v1 est dans 'gv -sc $ _ myinvocation'. Voir http://jtruher.spaces.live.com/blog/cns!7143DA6E51A2628D!172.entry –