Загрузочные переменные из другого сценария PowerShell
-
16-09-2019 - |
Вопрос
У меня есть несколько сценариев, которые могли бы повторно использовать переменные, поэтому я хотел бы выделить переменные в их собственных переменных. Скрипт PS1, т.е.
$var1 = "1"
$var2 = "2"
Я пытаюсь загрузить эти переменные, а затем распечатать их в сценарии Main.ps1, как это:
.\Variables.ps1
$var1
$var2
Это работает, если я впервые запускаю. Variables.ps1, но не если я просто запускаю main.ps1. Мое окружение - PowerShell Ise. Что я делаю не так?
Решение
Переменные, объявленные в Variables.ps1
находятся в "Script Scope". То есть вы не можете видеть их вне сценария сценария, который объявляет их. Один из способов принести переменные в Variables.ps1
к объему main.ps1
это "точечный источник" Variables.ps1
. Анкет Это, по сути, работает Variables.ps1
в сфере main.ps1
. Анкет Для этого просто заткните период и место перед вызовом сценария:
. .\Variables.ps1
$var1
$var2
Другие советы
# var.ps1
$Global:var1 = "1"
$Global:var2 = "2"
Это работает. Будь лучше или хуже, чем «точечный источник», вероятно, зависит от ваших конкретных требований.
PS > .\var.ps1
PS > $var1
1
PS > $var2
2
PS >
Просто чтобы обеспечить правильность ... попробуйте это ... в main.ps1
echo "Test"
. .\Variables.ps1
echo $var1
echo $var2