Question Inclure variables depuis fichier externe (Resolu)

Plus d'informations
il y a 16 ans 8 mois #531 par Berfini
Hé oui c'est encore moi, le noob de service qui ne peut pas se passer de vous pour l'ecriture de ses scripts. :P

Mon présent probleme est le suivant :
J'ai un fichier qui contient cela :
[code:1]#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\\\"[/code:1]
Et d'autres lignes du meme type.

J'ai une fonction Include faite comme ceci :
[code:1]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
}[/code:1]

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:1]POWERSHELL EXCEPTION
EXCEPTION TYPE: System.Management.Automation.RuntimeException
MESSAGE:La variable $Chemin_machine ne peut pas être récupérée, car elle n'a pas encore été définie.
POSITION:
Au niveau de ligne : 89 Caractère : 44
+ $CptrFile = $MainPath + $Chemin_machine <<<< + $OrdiName + \".txt\"
[/code:1]

Si quelqu'un peut m'aider svp ...<br><br>Message édité par: Gaby, à: 16/07/07 13:03

Gaby

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

Plus d'informations
il y a 16 ans 8 mois #535 par Robin Lemesle
En faisant un get-content tu vas récupérer le contenu du fichier sous forme de tableau.

exemple :
[code:1]$aFile = Get-Content -Path $cNameScript
$aFile[0] # correspond à la première ligne
$aFile[1] # à la seconde[/code:1]

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<br><br>Message édité par: robin, à: 11/07/07 08:43

Robin MVP PowerShell

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

Plus d'informations
il y a 16 ans 8 mois #536 par Berfini
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

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

Plus d'informations
il y a 16 ans 8 mois #542 par Arnaud Petitjean
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:1]invoke-expression $aFile[0][/code:1]

Arnaud

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?

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

Plus d'informations
il y a 16 ans 8 mois #543 par Berfini
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:1]
POWERSHELL EXCEPTION
EXCEPTION TYPE: System.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 &lt;&lt;&lt;&lt; $aFile[$i]
[/code:1]

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:1]Function Include ([string] $cNameScript)
{
$aFile = Get-Content -Path $cNameScript
for ($i = 0 ; $i -lt $aFile.length ; $i++)
{
invoke-expression $aFile[$i]
}
}[/code:1]

Et mon fichier de parametre :
[code:1]#Declaration du chemin vers les fichiers de parametrages des clients
$Chemin_client = \&quot;Client\Fichier_client\\\&quot;

#Declaration du chemin vers les fichiers de parametrages des machines
$Chemin_machine = \&quot;Client\Fichier_machine\\\&quot;

#Declaration du chemin vers les fichiers de correspondance login/fichier.bat
$Chemin_redirection = \&quot;Client\Redirection_OldBat\\\&quot;[/code:1]

Help me please :pinch:<br><br>Message édité par: Gaby, à: 11/07/07 15:32

Gaby

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

Plus d'informations
il y a 16 ans 8 mois #545 par Robin Lemesle
peut être devrais-tu tester si ta ligne est vide !

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


Rob

Robin MVP PowerShell

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

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