2009-12-08 9 views
36

Ich habe mehrere Skripte, die Variablen werden die Wiederverwendung könnte so Ich mag würde Variablen in ihrem eigenen Variables.ps1 Skript zu isolieren, dhLastvariablen aus einem anderen Powershell-Skript

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

Ich versuche, diese Variablen zu laden drucken sie sie dann heraus im Main.ps1 Skript wie folgt:

.\Variables.ps1 
$var1 
$var2 

Dies funktioniert, wenn ich zum ersten Mal laufen \ Variables.ps1 aber nicht, wenn ich laufe nur Main.ps1.. Meine Umgebung ist PowerShell ISE. Was mache ich falsch?

Antwort

64

Die Variablen in Variables.ps1 sind bei "Script Scope" erklärt. Das heißt, Sie können sie nicht außerhalb des Bereichs des Skripts sehen, das sie deklariert. Eine Möglichkeit, die Variablen in "Variables.ps1" in den Bereich von "main.ps1" zu bringen, besteht darin, "dots source" Variables.ps1 zu setzen. Dadurch wird Variables.ps1 im Bereich von main.ps1 ausgeführt. Um dies zu tun, halten nur einen Punkt und Platz vor Ihrem Aufruf des Skripts:

. .\Variables.ps1 
$var1 
$var2 
+3

Danke. Genau das, was ich brauchte. – Greg

0

Nur Korrektheit zu gewährleisten ... versuchen, dies ... in main.ps1

echo "Test" 
. .\Variables.ps1 
echo $var1 
echo $var2 
+0

Ich sehe nur die "Test" -Ausgabe. – Greg

+0

Schau es dir an ... Beitrag bearbeiten –

+0

Genau was Benutzer "zdan" erwähnt! –

24
$Global:var1 = "1" 
$Global:var2 = "2" 

Dies funktioniert. Ob es besser oder schlechter als "dot sourcing" ist, hängt wahrscheinlich von Ihren spezifischen Anforderungen ab.

PS > .\var.ps1 
PS > $var1 
1 
PS > $var2 
2 
PS > 
+0

Bestätigt, das funktioniert auch. – Greg

Verwandte Themen