web-dev-qa-db-ja.com

別のPowerShellスクリプトから変数を読み込む

変数を再利用できるスクリプトがいくつかあるので、変数をVariables.ps1スクリプトで分離したいと思います。

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

これらの変数を読み込んで、次のようにMain.ps1スクリプトに出力しようとしています。

.\Variables.ps1
$var1
$var2

これは、最初に。\ Variables.ps1を実行した場合に機能しますが、Main.ps1を実行した場合には機能しません。私の環境はPowerShell ISEです。私は何を間違えていますか?

48
Greg

Variables.ps1で宣言された変数は、「スクリプトスコープ」にあります。つまり、それらを宣言するスクリプトの範囲外では見ることができません。 Variables.ps1の変数をmain.ps1のスコープに入れる1つの方法は、「 dot source "Variables.ps1」です。これは、実際には、Variables.ps1のスコープでmain.ps1を実行します。これを行うには、スクリプトを呼び出す前にピリオドとスペースを付けてください。

. .\Variables.ps1
$var1
$var2
84
zdan
# var.ps1
$Global:var1 = "1"
$Global:var2 = "2"

これは動作します。 「ドットソーシング」より良いか悪いかは、おそらく特定の要件に依存します。

PS > .\var.ps1
PS > $var1
1
PS > $var2
2
PS >
31
dan-gph

正確さを確認するために...これを試してください... main.ps1で

echo "Test"
. .\Variables.ps1
echo $var1
echo $var2
0
Shankar R10N