Вызов определенной функции PowerShell из командной строки
У меня есть PowerShell script, который содержит несколько функций. Как вызвать определенную функцию из командной строки?
Это не работает:
powershell -File script.ps1 -Command My-Func
Ответ 1
Как правило, "точка" script в области видимости (глобальная, другая script, внутри скриптового блока). Точка script будет загружать и выполнять script внутри этой области без создания новой вложенной области. С функциями это имеет то преимущество, которое они придерживаются после выполнения script. Вы можете сделать то, что предлагает Tomer, за исключением того, что вам нужно будет пометить script например:
Если вы просто хотите выполнить функцию из текущего сеанса 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.