Question Probleme alim variable via import CSV

Plus d'informations
il y a 13 ans 1 mois #14575 par laucaz
Bonjour à tous,


J'ai un p'tit soucis d'alimentation de variable via l'import d'un CSV.

L'import se passe correctement et j'ai bien mon CSV dans ma variable d'import (cf copie ecran : )

1/ j'importe mes fichiers CSV
[code:1]##############################################################
# Import des fichiers de parametres
##############################################################
# Import du CSV determinant l'arborescence à créer
# import du fichier 1_Arbo.csv contenant les repertoires à créer
#$ImportArbo = Import-Csv $courant\1_Arbo.csv -delimiter \";\"
# pour debug
$ImportArbo = Import-Csv $RepCSV\1_Arbo.csv -delimiter \";\"


# Import du CSV determinant les ACL à poser
# import du fichier 2_ACL.csv contenant les ACL à poser sur les repertoires
# $ImportACL = Import-Csv $courant\2_ACL.csv -delimiter \";\"
# pour debug
$ImportACL = Import-Csv $RepCSV\2_ACL.csv -delimiter \";\"


# Import du CSV determinant les fichiesr à copier
# import du fichier 3_Peuplement.csv contenant les objets à copier dans les repertoires
# $ImportPeupl = Import-Csv $courant\3_Peuplement.csv -delimiter \";\"
# pour debug
$ImportPeupl = Import-Csv $RepCSV\3_Peuplement.csv -delimiter \";\"[/code:1]

2/ dans ma fonction j'initialise mon compteur et je compte mes lignes dans mon CSV

[code:1] # initialisation du compteur
$a = 0

# numero de ligne
$NumLigne = $ImportArbo.Ordre[/code:1]


3/ je boucle sur mon import jusqu'à ce que le nombre de ligne soit atteint
[code:1] foreach($line in $ImportACL)
{
# tant qu'on a pas atteint le nombre de ligne, on boucle
if($a -le $b)
{
# on selectionne les infos \"ServCible\" et \"Repertoire\"
$MachCible=$ImportACL.ServCible
$RacineBrut=$ImportACL.RACINE
$CtrlTotal=$ImportACL.Fullcontrol
$Modification=$ImportACL.modify
$Lecture=$ImportACL.read
[/code:1]

j'ai trois fonctions qui fonctionnent toutes 3 de la meme manière : La première crée l'arborescence à partir d'un CSV \"1_...\", la seconde applique les ACL à partir d'un CSV \"2_...\", la troisieme peuple l'arborescence à partir d'un CSV \"3_...\".

La premire fonction de creation de l'arbo fonctionne parfaitement.
Mais sur la seconde, mes variables \"$MachCible\", \"$RacineBrut\", \"$CtrlTotal\",... ne s'alimentent pas GRRRRRRRR
La copie d'ecran que je joins montre que me csv est correctement importé et que les informations sont disponibles ...

Question :
le nom de mes fichiers CSV peut il perturber sachant que la première fonction ... fonctionne ;-) ?

Au lieu d'importer mes 3 CSV au debut faudrait-il que je les importe à chaque debut de fonction ? sachant que quand j'affiche la valeur de ma variable stockant le resultat de l'import j'ai bien mes données ?

Me posais-je les bonnes question ????

@ vous lire
Laurent<br><br>Message édité par: titou4, à: 15/04/13 15:07
Pièces jointes :

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

Plus d'informations
il y a 13 ans 1 mois #14576 par xyz
Salut,
je ne comprends pas cette partie de ton code :
[code:1]
foreach($line in $ImportACL)
{
if($a -le $b)
{
# on selectionne les infos \&quot;ServCible\&quot; et \&quot;Repertoire\&quot;
$MachCible=$ImportACL.ServCible
[/code:1]
A quoi sert la variable $Line ?

Tutoriels PowerShell

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

Plus d'informations
il y a 13 ans 1 mois #14577 par laucaz
... effectivement avec la suite du code ce sera peut-etre plus clair

[code:1] # On applique les ACL

$acl = Get-Acl -Path \&quot;$MachCible\$RacineNet\&quot;
$inherit = [system.security.accesscontrol.InheritanceFlags]\&quot;ContainerInherit, ObjectInherit\&quot;
$propagation = [system.security.accesscontrol.PropagationFlags]\&quot;None\&quot;
$acl = Get-Acl -Path \&quot;$MachCible\$RacineNet\&quot;
# Control Total
$ar = New-Object system.security.accesscontrol.filesystemaccessrule($CtrlTotal,\&quot;FullControl\&quot;,$inherit,$propagation,\&quot;Allow\&quot;«»)
$acl.SetAccessRule($ar)
Set-Acl -Path \&quot;$MachCible\$RacineNet\&quot; $acl
# Modification
$ar = New-Object system.security.accesscontrol.filesystemaccessrule($Modification,\&quot;Modify\&quot;,$inherit,$propagation,\&quot;Allow\&quot;«»)
$acl.SetAccessRule($ar)
Set-Acl -Path \&quot;$MachCible\$RacineNet\&quot; $acl
# Lecture
$ar = New-Object system.security.accesscontrol.filesystemaccessrule($Lecture,\&quot;Read\&quot;,$inherit,$propagation,\&quot;Allow\&quot;«»)
$acl.SetAccessRule($ar)
Set-Acl -Path \&quot;$MachCible\$RacineNet\&quot; $acl[/code:1]

pour que l'ecriture soit plus simple je variabilise chaque categorie de donnée (import.cible, import.fullaccess, ...) de chaque ligne (d'où le Foreach)...

Je ne suis pas tres sur des syntaxe genre \&quot;Get-Acl -Path \&quot;$MachCible\$RacineNet\&quot;\&quot; mais quoiqu'il en soit avant d'arriver là les variables ne se valorisent pas.

Se qui est surprenant c'est que j'ai une fonction de creation de l'arbo construite sur le meme modele qui elle fonctionne parfaitement...

J'espère t'avoir eclairé un peu

Cordialement
Laurent

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

Plus d'informations
il y a 13 ans 1 mois #14578 par xyz
titou4 écrit:

J'espère t'avoir eclairé un peu

Non.
Essaie avec ceci :
[code:1]
Set-StrictMode -version latest
# test de ton code...
Set-StrictMode -Off
[/code:1]
Il te faudra surement initialiser des variables qui ne le sont pas.

Tutoriels PowerShell

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

Plus d'informations
il y a 13 ans 1 mois #14579 par laucaz
... toutes mes excuses Laurent dans ta reponse je n'avais pas vu ça

A quoi sert la variable $Line ?


... pas bon de faire trop de choses en meme temps.

En fait je n'arrivais pas à lui faire lire toutes mes ligne successivement donc pour la fonction précédente j'avais ajouté une colonne dans mon CSV avec un nombre successif (1,2,3,...) permetant de rendre chaque ligne unique (comme une clef index unique dans une base de donnée). et donc mon \&quot;foreach\&quot; ressemble à ça
[code:1]foreach($ImportArbo.Ordre in $ImportArbo)[/code:1]

Donc sur la seconde fonction qui ne marche pas, je me suis inspirée d'un script d'un collègue dans laquelle il faisait reference à une variable \&quot;$line\&quot;... d'où mon erreur.

Il y a surement une façon de faire moins \&quot;bricolage\&quot;... Quoiqu'il en soit je vais corriger mes CSV en entrée pour qu'ils aient tous une ligne \&quot;N° d'ordre\&quot; et retester...

Merci pour ton oeuil

Cordialement
Laurent

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

Plus d'informations
il y a 13 ans 1 mois #14580 par laucaz
... ca fonctionne ;-)))

Merci à toi
Laurent

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

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