変数を再利用できるスクリプトがいくつかあるので、変数をVariables.ps1スクリプトで分離したいと思います。
$var1 = "1"
$var2 = "2"
これらの変数を読み込んで、次のようにMain.ps1スクリプトに出力しようとしています。
.\Variables.ps1
$var1
$var2
これは、最初に。\ Variables.ps1を実行した場合に機能しますが、Main.ps1を実行した場合には機能しません。私の環境はPowerShell ISEです。私は何を間違えていますか?
Variables.ps1
で宣言された変数は、「スクリプトスコープ」にあります。つまり、それらを宣言するスクリプトの範囲外では見ることができません。 Variables.ps1
の変数をmain.ps1
のスコープに入れる1つの方法は、「 dot source "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