Вызов определенной функции PowerShell из командной строки - PullRequest
34 голосов
/ 10 сентября 2009

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

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

powershell -File script.ps1 -Command My-Func

Ответы [ 3 ]

71 голосов
/ 10 сентября 2009

Обычно вы «ставите» скрипт в область видимости (глобальный, другой скрипт, внутри блока скриптов). Точка сценария будет загружать и выполнять сценарий в этой области без создания новой вложенной области. Преимущество функций заключается в том, что они остаются после выполнения скрипта. Вы можете сделать то, что предлагает Томер, за исключением того, что вам нужно будет расставить все точки над сценарием, например ::100100

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

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

. .\script.ps1
My-Func

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

4 голосов
/ 10 сентября 2009

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

powershell -command "& { script1.ps; My-Func }"
3 голосов
/ 18 ноября 2015

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

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...