Question
Array variable
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 11 ans 1 mois #16615
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Array variable
quentin96 écrit:
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...
Cela me fait travailler les gammesEncore merci de l'interêt que vous porté à mon petit problème.
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.
- Quentin
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 14
- Remerciements reçus 0
il y a 10 ans 11 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 :
Merci à vous.
Quentin
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.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 10 ans 11 mois #16781
par Laurent Dardenne
Tutoriels PowerShell
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
[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.
- Quentin
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 14
- Remerciements reçus 0
il y a 10 ans 11 mois #16782
par Quentin
Réponse de Quentin sur le sujet Re:Array variable
Ce midi j'ai eu le flash aussi de ça . du coup je te remercie quand même de ta précision.
Finalement je pense que je vais faire mon \"requètage\" en live ... ca sera plus simple ...
Finalement je pense que je vais faire mon \"requètage\" 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.127 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- Array variable