Вызов скрипта

Материал из Wiki Test Lab
Перейти к: навигация, поиск

Назад    Главная
 

Вызов скрипта

Последняя тонкость, на которую я бы хотел обратить ваше внимание - различие между использованием оператора исполнения & и вызовом команды с помощью точки. Рассмотрим вызов простого скрипта, который определяет переменную $foo = 'PowerShell Rocks!'. Давайте выполним этот сценарий, используя оператор вызова и посмотрим его воздействие на глобальную сессию:

PS> $foo
PS> & .\script.ps1
PS> $foo

Как видим, оператор вызова запускает команду в дочерней области видимости, которая будет утеряна по окончании работы команды (сценария, функции и т. д.). То есть, такой способ не оказывает влияния на значение переменной $foo в глобальной области видимости. Теперь попробуем с точкой:

PS> $foo
PS> . C:\Users\Keith\script.ps1
PS> $foo
PowerShell Rocks!

Если мы ставим в начале строки точку, сценарий будет выполнен в текущей области видимости. В результате переменная $foo из скрипта script.ps1 становится ссылкой на глобальную переменную $foo (если сценарий вызван из командной строки с точкой), и сценарий успешно изменяет значение глобальной переменной $foo. Такое поведение не несёт сюрпризов - оно сходно с поведением в других командных оболочках. Эти же правила применяются к вызову функций. Однако для внешних exe-файлов неважно, производится их вызов точкой или оператором вызова. Выполнение exe-файлов происходит в отельном потоке и не оказывает влияния на текущую область видимости.

Эффективное программирование в Windows PowerShell

Личные инструменты