Question meilleure manière de gérer des constantes

Plus d'informations
il y a 10 ans 1 mois #12579 par Thomas Delahaye
Bonjour à tous,

Je cherche à savoir comment faire pour créer un fichier de constantes(variables) que je pourrais utiliser dans mes autres scripts.

Je voudrais faire cela proprement, à savoir que je suis en train de créer un script \"parent\" Ps1 qui lancera tous les scripts \"enfants\".

Dans tous ces scripts, je vais avoir besoin de récupérer la valeur des constantes(variables).

Pour mieux vous expliquer, voici mon architecture très simplifiée :
===============================
Variables.ps1
[code:1]$MonDossier =\"C:\Script\"
$NbLignes = 3[/code:1]
===============================
Parent.ps1
[code:1]#import des variables à faire ici
powershell \"$MonDossier\Enfant.ps1\"[/code:1]
===============================

Merci de votre aide

Thomas

Message édité par: tdelahaye, à: 21/08/12 10:52<br><br>Message édité par: tdelahaye, à: 21/08/12 10:53

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 10 ans 1 mois #12580 par Eric
Bonjour,

A ma connaissance, si tu préfixes tes variables par \&quot;$Global:\&quot; ça doit fonctionner.

Genre :

Fichier variables.ps1
[code:1]
$Global:v1 = \&quot;aaa\&quot;
[/code:1]

et

Fichier main.ps1
[code:1]
.\variables.ps1
write-host $v1
[/code:1]

Normalement $v1 s'affichera.<br><br>Message édité par: tofu, à: 21/08/12 11:19

No pain,no gain.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 10 ans 1 mois #12582 par Thomas Delahaye
Bonjour tofu,

Merci pour ta réponse.

ça fonctionne lorsque je suis en mode console, mais dès que j'ouvre le script parent.ps1 dans \&quot;Powershell ISE\&quot; et que j'essaye de l'executer, j'ai le message suivant :
\&quot;Le terme « .\_Variables.ps1 » n'est pas reconnu comme nom d'applet de commande, fonction, fichier de script ou programme exécutable\&quot;

Ce qui n'est pas très pratique pour dévelloper des scripts ... B)

Existe t'il une autre manière de gérer les variables ?

Sinon, je me résoudrais à insérer toutes mes variables dans parent.ps1.:unsure:

Merci encore

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 10 ans 1 mois #12583 par Laurent Dardenne
Salut,
tofu écrit:

A ma connaissance, si tu préfixes tes variables par \&quot;$Global:\&quot; ça doit fonctionner.

Oui, mais si on peut éviter l'usage de la portée Global: autant le faire.
Dans ce cas il faut charger le script dans la porté courante (dotsource) :
[code:1]
. .\Variables.ps1
[/code:1]
Et s'il s'agit de déclaration de vrai constante, qui ne change pas durant l'exécution du script, on peut utiliser ceci :
[code:1]
#Nom du répertoire d'hébergement du mécanisme côte client
New-Variable PathClient -Option Constant -Value \&quot;C:\Test\&quot; -Description \&quot;Chemin d'installation de la partie cliente... .\&quot; -EA SilentlyContinue
[/code:1]
Quant au pb sous ISE, essaie de te placer dans le répertoire l'hébergeant.

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 10 ans 1 mois #12584 par Thomas Delahaye
:) Merci Laurent.

Je viens de trouver quelque chose, mais je ne sais pas trop quoi en penser vis à vis des ressources utilisée ...


[code:1]
$ScriptPath = (Split-Path ((Get-Variable MyInvocation).Value).MyCommand.Path)

$MesVariables = $ScriptPath + \&quot;\_Variables.ps1\&quot;

. $MesVariables

Write-Host \&quot;Chemin: $MonDossier\&quot;
[/code:1]

Après, j'ai accès à toutes mes variables ...:)

Est-ce plus propre de créer ses variables avec New-Variable ?

Merci

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 10 ans 1 mois #12585 par Laurent Dardenne
tdelahaye écrit:

je ne sais pas trop quoi en penser vis à vis des ressources utilisée ...

J'ai pensé à cette approche, mais une chose à la fois.
C'est effectivement une solution mais cela suppose que tous tes scripts, partageant les constantes, soient dans le même répertoire. Sinon si tu utilises la v2 un module peut être une autre solution, plus tard ;-)
tdelahaye écrit:

Est-ce plus propre de créer ses variables avec New-Variable ?

Non, mais New-Variable te permet de préciser ReadOnly.
Si tu n'utilises pas de constante, ou tout autres paramètrage de ce cmdlet, pas besoin de New-Variable.

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.083 secondes
Propulsé par Kunena