Загрузить переменные из другой powershell script

У меня есть несколько сценариев, которые могут повторно использовать переменные, поэтому я хотел бы выделить переменные в своих переменных Variables.ps1 script, т.е.

$var1 = "1"
$var2 = "2"

Я пытаюсь загрузить эти переменные, а затем распечатать их в Main.ps1 script следующим образом:

.\Variables.ps1
$var1
$var2

Это работает, если я сначала запускаю. \Variables.ps1, но нет, если я просто запустил Main.ps1. Моя среда - это PowerShell ISE. Что я делаю неправильно?

Ответ 1

Переменные, объявленные в Variables.ps1, находятся в "Script Scope". То есть вы не можете видеть их за пределами области script, которая их объявляет. Один из способов переноса переменных в Variables.ps1 в область main.ps1 - "dot source" Variables.ps1. Это, по сути, запускает Variables.ps1 в области main.ps1. Чтобы сделать это, просто вставьте период и пробел перед вызовом script:

. .\Variables.ps1
$var1
$var2

Ответ 2

$Global:var1 = "1"
$Global:var2 = "2"

Это работает. Является ли это лучше или хуже, чем "точка поиска", вероятно, зависит от ваших конкретных требований.

PS > .\var.ps1
PS > $var1
1
PS > $var2
2
PS >

Ответ 3

Просто для обеспечения правильности... попробуйте это... в main.ps1

echo "Test"
. .\Variables.ps1
echo $var1
echo $var2