2015-05-27 3 views
1

Как:Для powershell, выполняющего другую powershell, в чем разница между «&» и «.».

& another.ps1 

И

. another.ps1 

Что их разница? Я хочу взять выходной текст другого сценария powershell, не желая импортировать внутренние функции, определенные в другом скрипте. Какое утверждение я могу использовать? Я обнаружил, что даже команда «&» автоматически импортирует все определения функций другого сценария powershell.

спасибо.

+0

Я не вижу этого эффекта в отношении функций. Они не видны с помощью оператора вызова («&»), но они видны при использовании оператора точечного источника («.»). –

ответ

6

Разница - область. & запускает скрипт в своей области. . запустит скрипт в текущей области.

$ErrorView = 'CategoryView' 
$x = 'Test' 

. { Get-variable x -Scope 0 } 
& { Get-Variable x -Scope 0 } 


Name       Value                  
----       -----                  
x        Test                  
ObjectNotFound: (x:String) [Get-Variable], ItemNotFoundException 

В первом примере, сценарий дот-источников в текущей области, и $ х видна на Scope 0.

Во втором примере, сценарий вызывается с & оператором и $ x не отображается на шкале 0.

Смежные вопросы