Когда вы находитесь в функции, вы можете получить доступ к автоматической переменной $ PSCmdLet .
Это чрезвычайно полезная переменная, которая содержит много информации о выполняемом в данный момент командлете.
В нашем сценарии мы хотели имя и определение текущей функции для некоторой рекурсии. $ MyInvocation был нулевым, потому что функция была в модуле PowerShell.
Однако в объекте PSCmdLet есть свойство «MyInvocation», которое содержит всю необходимую информацию и позволяет запускать наш сценарий.
например.
$ PSCmdlet.MyInvocation.MyCommand.Name = Имя функции
$ PSCmdlet.MyInvocation.MyCommand.Definition = Определение функции