Загрузочные переменные из другого сценария PowerShell

StackOverflow https://stackoverflow.com/questions/1864128

  •  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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top