Question Array variable

Plus d'informations
il y a 8 ans 9 mois #16615 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:Array variable
quentin96 écrit:

Encore merci de l'interêt que vous porté à mon petit problème.

Cela me fait travailler les gammes :)

Une ébauche basée sur une hashtable:
[code:1]
$file='c:\temp\Datas1.txt'
$a=@\"
dn: uid=personne,ou=people,dc=home,dc=fr
modifytimestamp: 20091025102613Z
modifiersname: cn=directory manager
gecos: ITA - Adjoint
dspswloop: true
mailAlternateAddress: Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.
mailAlternateAddress: Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.
mailAlternateAddress: Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.
userPassword: {crypt}dfsdfsdfz
datesortieAD: 135063900000000000
DateSortie: 20281231235959.0Z
ascoriaPresence: xxxxxxx.fr/kronolith/fb.php?u=personne
homeDirectory: /home/personne
vacationActive: FALSE
mailForwardingAddress: Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.
sn: Personne Nom
cn: Personne
FileServerName: server
dspswuserlink:: fsdfsdfsjfkls
uidNumber: 1111
gidNumber: 11
loginShell: /usr/bin/tcsh
creatorsname: cn=directory manager
createtimestamp: 20031023105510Z
objectClass: posixAccount
objectClass: shadowAccount
objectClass: top
objectClass: mailrecipient
objectClass: inetorgperson
objectClass: organizationalPerson
objectClass: person
objectClass: qmailuser
objectClass: account
objectClass: dspswuser
objectClass: blabla
objectClass: test
uid: personne
shadowLastChange: 11330
shadowFlag: 0
mail: Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.
accountStatus: active
nsuniqueid: lalalalalalalala
parentid: 34
entryid: 30
entrydn: uid=personne,ou=people,dc=home,dc=fr
numsubordinates: 0
subschemasubentry: cn=schema
hassubordinates: FALSE
dn: uid=personne2,ou=people,dc=home,dc=fr
modifytimestamp: 20091025102613Z
modifiersname: cn=directory manager
gecos: ITA - Adjoint
dspswloop: true
mailAlternateAddress: Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.
mailAlternateAddress: Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.
mailAlternateAddress: Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.
userPassword: {crypt}dfsdfsdfz
datesortieAD: 135063900000000000
DateSortie: 20281231235959.0Z
ascoriaPresence: xxxxxxx.fr/kronolith/fb.php?u=personne
homeDirectory: /home/personne
vacationActive: FALSE
mailForwardingAddress: Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.
sn: Personne Nom
cn: Personne
FileServerName: server
dspswuserlink:: fsdfsdfsjfkls
uidNumber: 1111
gidNumber: 11
loginShell: /usr/bin/tcsh
creatorsname: cn=directory manager
createtimestamp: 20031023105510Z
objectClass: posixAccount
objectClass: shadowAccount
objectClass: top
objectClass: mailrecipient
objectClass: inetorgperson
objectClass: organizationalPerson
objectClass: person
objectClass: qmailuser
objectClass: account
objectClass: dspswuser
objectClass: blabla
objectClass: test
uid: personne
shadowLastChange: 11330
shadowFlag: 0
mail: Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.
accountStatus: active
nsuniqueid: lalalalalalalala
parentid: 34
entryid: 30
entrydn: uid=personne,ou=people,dc=home,dc=fr
numsubordinates: 0
subschemasubentry: cn=schema
hassubordinates: FALSE
dn: uid=personne3,ou=people,dc=home,dc=fr
modifytimestamp: 20091025102613Z
modifiersname: cn=directory manager
gecos: ITA - Adjoint
dspswloop: true
mailAlternateAddress: Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.
mailAlternateAddress: Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.
mailAlternateAddress: Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.
userPassword: {crypt}dfsdfsdfz
datesortieAD: 135063900000000000
DateSortie: 20281231235959.0Z
ascoriaPresence: xxxxxxx.fr/kronolith/fb.php?u=personne
homeDirectory: /home/personne
vacationActive: FALSE
mailForwardingAddress: Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.
sn: Personne Nom
cn: Personne
FileServerName: server
dspswuserlink:: fsdfsdfsjfkls
uidNumber: 1111
gidNumber: 11
loginShell: /usr/bin/tcsh
creatorsname: cn=directory manager
createtimestamp: 20031023105510Z
objectClass: posixAccount
objectClass: shadowAccount
objectClass: top
objectClass: mailrecipient
objectClass: inetorgperson
objectClass: organizationalPerson
objectClass: person
objectClass: qmailuser
objectClass: account
objectClass: dspswuser
objectClass: blabla
objectClass: test
uid: personne
shadowLastChange: 11330
shadowFlag: 0
mail: Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.
accountStatus: active
nsuniqueid: lalalalalalalala
parentid: 34
entryid: 30
entrydn: uid=personne,ou=people,dc=home,dc=fr
numsubordinates: 0
subschemasubentry: cn=schema
hassubordinates: FALSE
\"@ >$file

$Datas=@{}
$key=$null

Switch -regex -file $file {
\"^dn: uid=\s*(?<uidListe>.*)\s*\" {
$Key=$Matches.uidListe.Split(',')[0]
$Datas.Add($Key,$null)
continue
}

\"^mailAlternateAddress:\s*(?<AlternateEmail>.*)\s*\" {
$Value=$Matches.AlternateEmail
$Datas.$Key=@{'Alternate'=$Value}
continue
}

\"^mailForwardingAddress:\s*(?<ForwardEmail>.*)\s*\" {
$Value=$Matches.ForwardEmail
$Datas.$Key.Add('Forward',$Value)
continue
}
} #switch

#Résultat
$Datas

#Accès à une entrée
$Datas.personne

#Accès au détails d'une entrée
$datas.personne.forward
[/code:1]
Ne connaissant pas les données manipulées ni leur relation, les regex et le code sont peut-être à revoir. De plus la construction d'un objet lié à chaque clé me semble préférable. La v2 peut être...

Tutoriels PowerShell

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

Plus d'informations
il y a 8 ans 8 mois #16780 par Quentin
Réponse de Quentin sur le sujet Re:Array variable
Bonjour,

Je suis désolé de la réponse tardive, mais je suis en alternance et j'ai eu un longue période d'école.

Le code semble ne pas accepter le add :

[code:1]$array = @{}
$Key = $null

$lineFormated = \"test\"

$array.Add($lineFormated,$null)
$Key = $lineFormated

$array.$Key.Add('Forward','blablabla')[/code:1]

me sort ceci :

Vous ne pouvez pas appeler de méthode sur une expression ayant la valeur Null.
Au niveau de C:\test_pw.ps1 : 9 Caractère : 16
+ $array.$Key.Add <<<< ('Forward','blablabla')
+ CategoryInfo : InvalidOperation: (Add:String) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull


Merci à vous.

Quentin

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

Plus d'informations
il y a 8 ans 8 mois #16781 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:Array variable
Ton dernier code ne peut fonctionner :
[code:1]
$array = @{}
$Key = $null

$lineFormated = \"test\"

#Ajoute une clé ayant la valeur $Null
$array.Add($lineFormated,$null)
#Key contient le nom de la clé 'Test\"
$Key = $lineFormated

#Accéde à la clé Key 'Test\" dont la valeur est $NULL
$array.$Key.Add('Forward','blablabla')
# exception
[/code:1]
Résultat des courses : $Null c'est nul, il n'y a pas d'espoir de faire qq chose avec !
Le Add doit référencer une méthode d'une instance de classe conteneur(en plus simple, un objet), ici une AUTRE hashtable, mais on ne peut pas appeler une méthode à partir de rien, à moins de prendre des cours de magie ;-)

Voici l'ajout de ce qui manque :
[code:1]
$array = @{}
$Key = $null

$lineFormated = \"test\"

#Ajoute une clé ayant pour valeur un objet hashtable
$array.Add($lineFormated,@{})

#Key contient le nom de la clé 'Test\"
$Key = $lineFormated

#Accéde à la clé Key 'Test\" la valeur est UN OBJET de type hashtable
#Celle-ci posséde une méthode Add.
$array.$Key.Add('Forward','blablabla')

#Objet conteneur
$Array
#Datas de premier niveau
$Array.Test
#Datas de second niveau
$Array.Test.Forward
[/code:1]<br><br>Message édité par: Laurent Dardenne, à: 20/01/14 12:39

Tutoriels PowerShell

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

Plus d'informations
il y a 8 ans 8 mois #16782 par Quentin
Réponse de Quentin sur le sujet Re:Array variable
Ce midi j'ai eu le flash aussi de ça :P. du coup je te remercie quand même de ta précision.

Finalement je pense que je vais faire mon \&quot;requètage\&quot; en live ... ca sera plus simple ...

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

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