Подтвердить что ты не робот

Вызов определенной функции PowerShell из командной строки

У меня есть PowerShell script, который содержит несколько функций. Как вызвать определенную функцию из командной строки?

Это не работает:

powershell -File script.ps1 -Command My-Func
4b9b3361

Ответ 1

Как правило, "точка" script в области видимости (глобальная, другая script, внутри скриптового блока). Точка script будет загружать и выполнять script внутри этой области без создания новой вложенной области. С функциями это имеет то преимущество, которое они придерживаются после выполнения script. Вы можете сделать то, что предлагает Tomer, за исключением того, что вам нужно будет пометить script например:

powershell -command "& { . <path>\script1.ps1; My-Func }"

Если вы просто хотите выполнить функцию из текущего сеанса PowerShell, сделайте следующее:

. .\script.ps1
My-Func

Просто имейте в виду, что любой script не в функции будет выполняться, и любые переменные script станут глобальными переменными.

Ответ 2

Возможно, что-то вроде

powershell -command "& { script1.ps; My-Func }"

Ответ 3

Инструкция выдает сообщение об ошибке ниже. Предполагается, что точка должна быть указана до имени файла, чтобы загрузить его в память, как предположил Кейт Хилл.

MyFunction: The term 'MyFunction' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.