Question
compare-object avec une liste import-csv
- rhiwotar
- Auteur du sujet
- Hors Ligne
- Membre premium
Réduire
Plus d'informations
- Messages : 111
- Remerciements reçus 2
il y a 3 ans 10 mois #30350
par rhiwotar
compare-object avec une liste import-csv a été créé par rhiwotar
Bonjour à tous,
Je suis tombé sur un casse-tête qui vient de me faire perdre mon après-midi
Mon chef m'a demander de comparer une liste en csv que j'ai importé dans csv et une liste d'adresse mail que je suis allais chercher dans exchange online.
et ça marche pas.
J'ai tenté pleins de trucs, comme passer tous les éléments par un foreach , ajouter le [string] devant les variables, avec du if -like je suis même allé chercher les valeurs identiquesdonc je suis sur que les adresses contenus sont identiques mais le compare ou le if -like me dit false
J'ai fini par faire la liste à la main mais je veux comprendre pourquoi ça marche pas
Si vous avez des idées, je suis preneur !! Merci d'avance!!
Je suis tombé sur un casse-tête qui vient de me faire perdre mon après-midi
Mon chef m'a demander de comparer une liste en csv que j'ai importé dans csv et une liste d'adresse mail que je suis allais chercher dans exchange online.
$listeExchange = (get-EXOMailbox).emailaddresses -replace "smtp:",""
$listeaverifier = import-csv -Path "C:\Bureau\Adresses Mail à valider.csv" -Delimiter ";" -Encoding UTF8
Compare-Object -ReferenceObject ($listeaverifier)."nouvelle adresse" -DifferenceObject $listeExchange -IncludeEqual |where{$_.SideIndicator -notlike "=>"}
et ça marche pas.
J'ai tenté pleins de trucs, comme passer tous les éléments par un foreach , ajouter le [string] devant les variables, avec du if -like je suis même allé chercher les valeurs identiques
$listeaverifier[0] -like $listeexchange[5]
J'ai fini par faire la liste à la main mais je veux comprendre pourquoi ça marche pas
Si vous avez des idées, je suis preneur !! Merci d'avance!!
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 3 ans 10 mois #30351
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet compare-object avec une liste import-csv
Salut,
Ensuite vérifie si les structures de données que tu compares sont identiques. A priori la propriété emailaddresses renvoi une liste d'email séparée par des virgules si je me souviens bien.
Dans ce cas le traitement sera différent, mais pour comprendre ton problème il faut au moins un jeu de test....
Pour régler ce type de problème il faut au moins un jeu de test.rhiwotar écrit: et ça marche pas.
..
je veux comprendre pourquoi ça marche pas
Ensuite vérifie si les structures de données que tu compares sont identiques. A priori la propriété emailaddresses renvoi une liste d'email séparée par des virgules si je me souviens bien.
Dans ce cas le traitement sera différent, mais pour comprendre ton problème il faut au moins un jeu de test....
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- rhiwotar
- Auteur du sujet
- Hors Ligne
- Membre premium
Réduire
Plus d'informations
- Messages : 111
- Remerciements reçus 2
il y a 3 ans 10 mois #30354
par rhiwotar
Réponse de rhiwotar sur le sujet compare-object avec une liste import-csv
Pour le jeu de test, ça va etre compliqué, c'est des adresses mails pro et si je les anonymise, ça risque de fausser les tests
Dans get-exomailbox, ça me les mets à la suite avec virgules de séparation, c'est pour ça que j'appelle juste sa propriété emailaddress pour qu'il me retourne une liste d'objets, une adresse par ligne, avec le get-type, je vois bien que tout le monde est en string, sur une liste comme sur l'autre
J'ai même enlevé les espaces en trop sur le csv car mon chef en à rajouter automatiquement pour avoir toujours le même nombre de caractères, ça change rien,
Je me demande si ça peut-être dû à l'encodage du CSV, je l'ai importer avec la valeur par défaut et avec le -encoding UTF-8, possible que cela joue?
Dans get-exomailbox, ça me les mets à la suite avec virgules de séparation, c'est pour ça que j'appelle juste sa propriété emailaddress pour qu'il me retourne une liste d'objets, une adresse par ligne, avec le get-type, je vois bien que tout le monde est en string, sur une liste comme sur l'autre
J'ai même enlevé les espaces en trop sur le csv car mon chef en à rajouter automatiquement pour avoir toujours le même nombre de caractères, ça change rien,
Je me demande si ça peut-être dû à l'encodage du CSV, je l'ai importer avec la valeur par défaut et avec le -encoding UTF-8, possible que cela joue?
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 3 ans 10 mois #30355
par Laurent Dardenne
Peux-tu m'indiquer quelle ligne effectue ce traitement pour les adresses Exchange?
Un petit changement :
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet compare-object avec une liste import-csv
A voir :rhiwotar écrit: Pour le jeu de test, ça va etre compliqué
#$listeExchange = (get-EXOMailbox).emailaddresses -replace "smtp:",""
$listeExchange = @('smtp:un@a.com,deux@b.com','smtp:trois@c.com,quatrex@d.com') -replace "smtp:",""
#$listeaverifier = import-csv -Path "C:\Bureau\Adresses Mail à valider.csv" -Delimiter ";" -Encoding UTF8
$listeaverifier=@([PSCustomObject]@{'nouvelle adresse'='un@a.com'};[PSCustomObject]@{'nouvelle adresse'='autre@autre.com'})
Compare-Object -ReferenceObject ($listeaverifier)."nouvelle adresse" -DifferenceObject $listeExchange -IncludeEqual |where {$_.SideIndicator -notlike "=>"}
Okrhiwotar écrit: c'est pour ça que j'appelle juste sa propriété emailaddress pour qu'il me retourne une liste d'objets, une adresse par ligne
Ok, mais pour les adresses contenues dans le fichier CSV, enfin à priori.rhiwotar écrit: une adresse par ligne
Peux-tu m'indiquer quelle ligne effectue ce traitement pour les adresses Exchange?
Un petit changement :
#$listeExchange = (get-EXOMailbox).emailaddresses -replace "smtp:",""
$listeExchange = @('smtp:un@a.com,deux@b.com','smtp:trois@c.com,quatrex@d.com') -replace "smtp:","" -split ','
#$listeaverifier = import-csv -Path "C:\Bureau\Adresses Mail à valider.csv" -Delimiter ";" -Encoding UTF8
$listeaverifier=@([PSCustomObject]@{'nouvelle adresse'='un@a.com'};[PSCustomObject]@{'nouvelle adresse'='autre@autre.com'})
Compare-Object -ReferenceObject ($listeaverifier)."nouvelle adresse" -DifferenceObject $listeExchange -IncludeEqual |where {$_.SideIndicator -notlike "=>"}
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.107 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Discussions générales
- compare-object avec une liste import-csv