Flash info

Prenez une longueur d'avance avec PowerShell. Faire ce choix c'est anticiper l'avenir des produits Microsoft mais aussi être plus performant dans son travail quotidien d'admin système.

 
Accueil arrow Forum

Bienvenue sur le forum PowerShell-Scripting.com

 
Gaby
Utilisateur

PowerShelleur Amateur
Messages: 86
graphgraph
Karma: 3  
Inclure variables depuis fichier externe (Resolu) - 10/07/07 09:40 Hé oui c'est encore moi, le noob de service qui ne peut pas se passer de vous pour l'ecriture de ses scripts.

Mon présent probleme est le suivant :
J'ai un fichier qui contient cela :
Code:

 #Declaration du chemin vers les fichiers de parametrages des clients $Chemin_client "Client\Fichier_client\\" #Declaration du chemin vers les fichiers de parametrages des machines $Chemin_machine "Client\Fichier_machine\\"


Et d'autres lignes du meme type.

J'ai une fonction Include faite comme ceci :
Code:

 Function Include ([string$cNameScript) {     #$oFS = new-Object -comobject "Scripting.FileSystemObject"     #oFile= $oFS.OpenTextFile($cNameScript)     $aFile Get-Content -Path $cNameScript         if ($TestUser)     {         Write-Host "Le fichier inclut par WinLogon.ps1 est: " $cNameScript     }     $aFile     #oFile.ReadAll()     #oFile.Close }



J'ai essaye 2 methodes (celle en commentaire + celle qui ne l'ai pas) pour importer ces variables dans mon script mais voici ce que j'ai lors de son execution :
Code:

 POWERSHELL EXCEPTION  EXCEPTION TYPESystem.Management.Automation.RuntimeException MESSAGE:La variable $Chemin_machine ne peut pas être récupéréecar elle n'a pas encore été définie. POSITION: Au niveau de ligne : 89 Caractère : 44 +     $CptrFile = $MainPath + $Chemin_machine  <<<< + $OrdiName + ".txt"



Si quelqu'un peut m'aider svp ...

Message édité par: Gaby, à: 16/07/07 13:03
Gaby
  | | L'administrateur a désactivé l'accés public en écriture.
Robin
Admin

Administrateur
Messages: 262
graphgraph
Karma: 8  
Re:Inclure variables depuis un fichier externe - 11/07/07 07:42 En faisant un get-content tu vas récupérer le contenu du fichier sous forme de tableau.

exemple :
Code:

 $aFile Get-Content -Path $cNameScript  $aFile[0# correspond à la première ligne $aFile[1#  à la seconde



tu peux donc récupérer tes lignes et faire un traitement dessus afin d'en garder les lignes utiles.

J'éspère que cela repond à ta question. Dans le cas contraire dis le moi.


Rob

Message édité par: robin, à: 11/07/07 08:43
Robin MVP PowerShell
  | | L'administrateur a désactivé l'accés public en écriture.
Gaby
Utilisateur

PowerShelleur Amateur
Messages: 86
graphgraph
Karma: 3  
Re:Inclure variables depuis un fichier externe - 11/07/07 08:12 En fait le probleme n'est pas de garder les lignes dont j'ai besoin, mais de les executer pour que mes variables soient definies et remplies avec mes valeurs. Gaby
  | | L'administrateur a désactivé l'accés public en écriture.
Arnaud
Admin

Administrateur
Messages: 1319
graphgraph
Karma: 45  
Re:Inclure variables depuis un fichier externe - 11/07/07 13:34 Salut Gaby,

Ensuite une fois que tu as récupéré tes commandes tu n'as plus qu'à les exécuter avec Invoke-Expression en faisant une boucle.

Exemple :
Code:

 invoke-expression $aFile[0]



Arnaud
MVP PowerShell (depuis 2007)
Suivez moi sur Twitter !
  | | L'administrateur a désactivé l'accés public en écriture.
Gaby
Utilisateur

PowerShelleur Amateur
Messages: 86
graphgraph
Karma: 3  
Re:Inclure variables depuis un fichier externe - 11/07/07 14:21 Super ça marche merci bcp !

Cependant un little soucis persiste :
Mon fichier de parametres que j'arrive a importer contient des lignes vides.
Ce qu'il fait que quand je l'execute, j'obtiens ceci :
Code:

 -------------------------------------------------------------------------------- POWERSHELL EXCEPTION  EXCEPTION TYPESystem.Management.Automation.ParameterBindingValidationException MESSAGE:Impossible de lier l'argument au paramètre « Command », car il s'agit d'une chaîne vide. POSITION: Au niveau de ligne : 12 Caractère : 26 +         invoke-expression  <<<< $aFile[$i] --------------------------------------------------------------------------------



Et si j'eneleve les lignes vides, il ne m'integre plus mes variables et je reviens au point de depart.

Voici mon code :
Code:

 Function Include ([string$cNameScript) {     $aFile Get-Content -Path $cNameScript         for ($i $i -lt $aFile.length $i++)     {         invoke-expression $aFile[$i]     } }



Et mon fichier de parametre :
Code:

 #Declaration du chemin vers les fichiers de parametrages des clients $Chemin_client "Client\Fichier_client\\" #Declaration du chemin vers les fichiers de parametrages des machines $Chemin_machine "Client\Fichier_machine\\" #Declaration du chemin vers les fichiers de correspondance login/fichier.bat $Chemin_redirection "Client\Redirection_OldBat\\"



Help me please

Message édité par: Gaby, à: 11/07/07 15:32
Gaby
  | | L'administrateur a désactivé l'accés public en écriture.
Robin
Admin

Administrateur
Messages: 262
graphgraph
Karma: 8  
Re:Inclure variables depuis un fichier externe - 11/07/07 16:57 peut être devrais-tu tester si ta ligne est vide !

Code:

 if($aFile[0].length -ne 0) {  invoke-expression $aFile[$i] }




Rob
Robin MVP PowerShell
  | | L'administrateur a désactivé l'accés public en écriture.
Gaby
Utilisateur

PowerShelleur Amateur
Messages: 86
graphgraph
Karma: 3  
Re:Inclure variables depuis un fichier externe - 12/07/07 08:15 J'y avais pensé mais j'ai toujours le meme probleme Gaby
  | | L'administrateur a désactivé l'accés public en écriture.
janel
Admin

Administrateur
Messages: 576
graphgraph
Karma: 31  
Re:Inclure variables depuis un fichier externe - 15/07/07 23:10 Tes lignes vides contiennent peut-être des espaces, ce qui expliquerait pourquoi le test de nullité de leur longueur échoue.

Pour vérifier cette hypothèse, essaie ceci:

Code:

 if ($aFile[0].trim().length -ne 0) {    invoke-expression $aFile[$i] }



Janel
  | | L'administrateur a désactivé l'accés public en écriture.
Gaby
Utilisateur

PowerShelleur Amateur
Messages: 86
graphgraph
Karma: 3  
Re:Inclure variables depuis un fichier externe - 16/07/07 10:14 Non sa ne marche toujours pas Gaby
  | | L'administrateur a désactivé l'accés public en écriture.
janel
Admin

Administrateur
Messages: 576
graphgraph
Karma: 31  
Re:Inclure variables depuis un fichier externe - 16/07/07 11:41 Tu peux partager le fichier de paramètres pour qu'on puisse faire des essais?

Janel
  | | L'administrateur a désactivé l'accés public en écriture.
Gaby
Utilisateur

PowerShelleur Amateur
Messages: 86
graphgraph
Karma: 3  
Re:Inclure variables depuis un fichier externe - 16/07/07 11:49 Sans probleme :
File Attachment:
File name: Param_Logon.ps1
File size:1261 bytes
Gaby
  | | L'administrateur a désactivé l'accés public en écriture.
Gaby
Utilisateur

PowerShelleur Amateur
Messages: 86
graphgraph
Karma: 3  
Re:Inclure variables depuis un fichier externe - 16/07/07 11:56 J'ai trouvé la solution :
Code:

 . .\$cNameScript


Merci quand meme d'avoir pris le temps d'essayer de resoudre mon probleme.

Message édité par: Gaby, à: 16/07/07 12:57
Gaby
  | | L'administrateur a désactivé l'accés public en écriture.
Robin
Admin

Administrateur
Messages: 262
graphgraph
Karma: 8  
Re:Inclure variables depuis un fichier externe - 26/07/07 14:19 je me permets de revenir sur ce post.

Gaby, tu le sais sûrement mais si tu places un point et un espace avant le nom du script lorsque tu l'exécutes PowerShell traitera les variables comme si tu avais défini le type de portée globale à tes variables.
je ne suis pas sûr que ce soit la meilleure solution.


Rob
Robin MVP PowerShell
  | | L'administrateur a désactivé l'accés public en écriture.
janel
Admin

Administrateur
Messages: 576
graphgraph
Karma: 31  
Re:Inclure variables depuis un fichier externe - 26/07/07 18:14 Euh, en fait moi aussi je reviens sur ce post en relisant le tout début. Pour une raison qui m'échappe je n'avais pas tilté sur le fait qu'il s'agissait simplement d'un script PowerShell qui déclarait des variables. Et j'avais loupé la mise à jour avec la pièce jointe...

Si, Gaby a raison, l'appel à ce script en "dot sourcing" (c'est comme ça qu'on appelle le fait d'exécuter le script en le préfixant avec un point) est la bonne solution: elle permet de l'exécuter dans le contexte de l'environnement appelant. Donc, les variables et les fonctions déclarées dans ce script seront accessibles au script ou à la console qui l'a appelé.

Janel
  | | L'administrateur a désactivé l'accés public en écriture.
© 2020 PowerShell-Scripting.com