Выполнение функции Powershell (которая принимает параметры) из командной оболочки Powershell - PullRequest
1 голос
/ 15 сентября 2010

У меня есть скрипт powershell, который является функцией и принимает параметры. С помощью командной оболочки powershell, как мне выполнить функцию? Похоже, что он работает по-разному для разных пользователей.

Ответы [ 2 ]

6 голосов
/ 15 сентября 2010

Является ли ваш сценарий просто сценарием или содержит функцию?Если это скрипт и он принимает параметры, он будет выглядеть примерно так:

-- top of file foo.ps1  --
param($param1, $param2)

<script here>

Вы вызываете это так же, как и командлет, за исключением того, что если вы работаете с текущим каталогом, вы должны указать путь к скриптунапример, так:

.\foo.ps1 a b

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

-- top of file foo.ps1  --
function foo ($param1, $param2) {
    <script here>
}

Если вы запустите foo.ps1, как описано выше, ничего не произойдет, кроме как вы определите функцию с именем foo во временной области, и эта область исчезнет, ​​когда скриптвыходы.Вы можете добавить строку в конец скрипта, которая на самом деле вызывает функцию foo.Но, возможно, вы намереваетесь использовать этот скрипт скорее как библиотеку функций многократного использования.В этом случае вы, вероятно, захотите load функции в текущей области.Это можно сделать с помощью оператора точечного источника . следующим образом:

C:\PS> . .\foo.ps1
C:\PS> foo a b

Теперь функция foo будет определена на глобальном уровне.Обратите внимание, что вы можете сделать то же самое в другом скрипте, который загрузит эту функцию в область действия скрипта.

0 голосов
/ 15 сентября 2010

Посмотрите на этот пост, может быть, он подходит именно вам. Как передать аргументы командной строки в файл PowerShell ps1

В любом случае встроенная переменная $ args - это массив, содержащий все аргументы командной строки.

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