Загрузить переменные из другой 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