J'ai plusieurs scripts qui pourraient réutiliser des variables, donc je voudrais isoler les variables dans leur propre script Variables.ps1, c'est-à-dire.
$var1 = "1"
$var2 = "2"
J'essaie de charger ces variables puis de les imprimer dans le script Main.ps1 comme ceci:
.\Variables.ps1
$var1
$var2
Cela fonctionne si je lance d'abord.\Variables.ps1 mais pas si je lance simplement Main.ps1. Mon environnement est PowerShell ISE. Qu'est-ce que je fais mal?
Les variables déclarées dans Variables.ps1
sont dans "Script Scope". Autrement dit, vous ne pouvez pas les voir en dehors de la portée du script qui les déclare. Une façon d'amener les variables dans Variables.ps1
à l'étendue de main.ps1
est à " source de points " Variables.ps1
. Cela, en effet, s'exécute Variables.ps1
dans le cadre de main.ps1
. Pour ce faire, il suffit de coller un point et un espace avant votre invocation du script:
. .\Variables.ps1
$var1
$var2
# var.ps1
$Global:var1 = "1"
$Global:var2 = "2"
Cela marche. Que ce soit meilleur ou pire que le "dot sourcing" dépend probablement de vos besoins spécifiques.
PS > .\var.ps1
PS > $var1
1
PS > $var2
2
PS >
Juste pour assurer l'exactitude ... essayez ceci ... dans main.ps1
echo "Test"
. .\Variables.ps1
echo $var1
echo $var2