Question
Comparaison de deux fichiers CSV
- alex
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 15
- Remerciements reçus 0
il y a 11 ans 2 mois #18731
par alex
Réponse de alex sur le sujet Re:Comparaison de deux fichiers CSV
Merci pour votre aide.
J'ai bien lu vos liens et ils m'ont beaucoup aidés.
Néanmoins je n'ai pas trouvé d'explication quand à l'arraylist en plusieurs dimensions. J'ai essayé plusieurs choses sans succès.
Voici la boucle que j'ai actuellement :
[code:1]
$List = [System.Collections.ArrayList]@()
foreach ($User in $Users)
{
$List.Add($User.EmailAddress)
$List.Add($User.FirstName)
$List.Add($User.LastName)
$List.Add($User.LastLogin)
$List.Add($User.FirstLogin)
}[/code:1]
Je me doute que cette boucle n'est pas bonne, de plus quand je fais l'export je reçois uniquement la longueur de chaque chaîne. Je me souviens avoir vu qu'il faut rajouter un paramètre mais plus moyen de le retrouver.
Encore désolé du dérangement,
Cordialement.<br><br>Message édité par: Helongh, à: 6/01/15 09:37
J'ai bien lu vos liens et ils m'ont beaucoup aidés.
Néanmoins je n'ai pas trouvé d'explication quand à l'arraylist en plusieurs dimensions. J'ai essayé plusieurs choses sans succès.
Voici la boucle que j'ai actuellement :
[code:1]
$List = [System.Collections.ArrayList]@()
foreach ($User in $Users)
{
$List.Add($User.EmailAddress)
$List.Add($User.FirstName)
$List.Add($User.LastName)
$List.Add($User.LastLogin)
$List.Add($User.FirstLogin)
}[/code:1]
Je me doute que cette boucle n'est pas bonne, de plus quand je fais l'export je reçois uniquement la longueur de chaque chaîne. Je me souviens avoir vu qu'il faut rajouter un paramètre mais plus moyen de le retrouver.
Encore désolé du dérangement,
Cordialement.<br><br>Message édité par: Helongh, à: 6/01/15 09:37
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
il y a 11 ans 2 mois #18732
par Philippe
Réponse de Philippe sur le sujet Re:Comparaison de deux fichiers CSV
bonjour Helongh
un premier exemple pris ici
[code:1]$list = new-object system.collections.arraylist
$list.Add((\"Elem1x\", \"Elem1y\", \"Elem1z\"«»)) | out-null
$list.Add((\"Elem2x\", \"Elem2y\"«»)) | out-null
$list[0][0]
$list[1][0][/code:1]
un premier exemple pris ici
[code:1]$list = new-object system.collections.arraylist
$list.Add((\"Elem1x\", \"Elem1y\", \"Elem1z\"«»)) | out-null
$list.Add((\"Elem2x\", \"Elem2y\"«»)) | out-null
$list[0][0]
$list[1][0][/code:1]
comme tu le vois au dessus l'accès au données ce fait avec les crochets \"[]\" et non par un nom de propriétéje reçois uniquement la longueur de chaque chaîne
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
il y a 11 ans 2 mois #18733
par Philippe
Réponse de Philippe sur le sujet Re:Comparaison de deux fichiers CSV
un petit extrait de ton code modifier :
[code:1][System.Collections.ArrayList]$Names = Get-Content -Path C:\names.csv
$resultTable = new-object system.collections.arraylist
# si le prénom du client est dans la base de données
if ($PnomUser -eq $Pnom) {
# on l'ajoute dans une Collections.ArrayList
$resultTable.add($User.FirstName, $User.LastName);
}
$ResultTable | Set-Content \"c:\names.csv\"
[/code:1]
comme tu le vois j'utilise get-content sinon powershell fais une convertion en PSCustomObject ce qui n'est pas le but recherché !
et set-content sinon tu n'a que les longueurs !!!
[code:1][System.Collections.ArrayList]$Names = Get-Content -Path C:\names.csv
$resultTable = new-object system.collections.arraylist
# si le prénom du client est dans la base de données
if ($PnomUser -eq $Pnom) {
# on l'ajoute dans une Collections.ArrayList
$resultTable.add($User.FirstName, $User.LastName);
}
$ResultTable | Set-Content \"c:\names.csv\"
[/code:1]
comme tu le vois j'utilise get-content sinon powershell fais une convertion en PSCustomObject ce qui n'est pas le but recherché !
et set-content sinon tu n'a que les longueurs !!!
Connexion ou Créer un compte pour participer à la conversation.
- alex
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 15
- Remerciements reçus 0
il y a 11 ans 2 mois #18734
par alex
Réponse de alex sur le sujet Re:Comparaison de deux fichiers CSV
Merci de ta réponse,
J'ai avancé un peu et j'en suis arrivé à ça :
[code:1]
$ResultFileName = \"C:\Users\resultat.csv\"
[System.Collections.ArrayList]$Users = Get-Content -Path C:\Users\users.csv
$List = New-Object System.Collections.ArrayList
foreach ($User in $Users)
{
$List.Add(($User.EmailAddress,$User.FirstName,$User.LastName,$User.LastLogin,$User.FirstLogin))
}
$List | Select-Object -Property 'EmailAddress','FirstName', 'LastName', 'LastLogin', 'FirstLogin' | Export-csv -path $ResultFileName -Delimiter \",\" -NoTypeInformation -Encoding UTF8 -Force;
[/code:1]
Je me sert de ce code pour tester si la boucle fonctionne, ça m'évite d'attendre plusieurs heures afin d'avoir un résultat.
Je n'ai pas utilisé Set-Content car le fichier créé est totalement vide, néanmoins l'export-csv me renvoie un fichier avec les bons headers, mais le contenu du fichier est : ,,,, pour chaque ligne.
Cordialement.
J'ai avancé un peu et j'en suis arrivé à ça :
[code:1]
$ResultFileName = \"C:\Users\resultat.csv\"
[System.Collections.ArrayList]$Users = Get-Content -Path C:\Users\users.csv
$List = New-Object System.Collections.ArrayList
foreach ($User in $Users)
{
$List.Add(($User.EmailAddress,$User.FirstName,$User.LastName,$User.LastLogin,$User.FirstLogin))
}
$List | Select-Object -Property 'EmailAddress','FirstName', 'LastName', 'LastLogin', 'FirstLogin' | Export-csv -path $ResultFileName -Delimiter \",\" -NoTypeInformation -Encoding UTF8 -Force;
[/code:1]
Je me sert de ce code pour tester si la boucle fonctionne, ça m'évite d'attendre plusieurs heures afin d'avoir un résultat.
Je n'ai pas utilisé Set-Content car le fichier créé est totalement vide, néanmoins l'export-csv me renvoie un fichier avec les bons headers, mais le contenu du fichier est : ,,,, pour chaque ligne.
Cordialement.
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
il y a 11 ans 2 mois #18736
par Philippe
Réponse de Philippe sur le sujet Re:Comparaison de deux fichiers CSV
peut tu faire ceci et nous renvoyer le resultat stp :
[code:1]$List.gettype()
# et aussi
$List | Get-Member[/code:1]
[code:1]$List.gettype()
# et aussi
$List | Get-Member[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
- alex
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 15
- Remerciements reçus 0
il y a 11 ans 2 mois #18738
par alex
Réponse de alex sur le sujet Re:Comparaison de deux fichiers CSV
Le résultat pour $List.gettype() :
[code:1]IsPublic IsSerial Name BaseType
----
True True ArrayList System.Object[/code:1]
Et celui pour Get-Member :
[code:1]
TypeName: System.Object[]
Name MemberType Definition
----
Count AliasProperty Count = Length
Address Method System.Object&, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77... Clone Method System.Object Clone()
CopyTo Method System.Void CopyTo(array array, int index), System.Void CopyTo(array array, lo... Equals Method bool Equals(System.Object obj)
Get Method System.Object Get(int )
GetEnumerator Method System.Collections.IEnumerator GetEnumerator()
GetHashCode Method int GetHashCode()
GetLength Method int GetLength(int dimension)
GetLongLength Method long GetLongLength(int dimension)
GetLowerBound Method int GetLowerBound(int dimension)
GetType Method type GetType()
GetUpperBound Method int GetUpperBound(int dimension)
GetValue Method System.Object GetValue(Params int[] indices), System.Object GetValue(int index... Initialize Method System.Void Initialize()
Set Method System.Void Set(int , System.Object )
SetValue Method System.Void SetValue(System.Object value, int index), System.Void SetValue(Sys... ToString Method string ToString()
IsFixedSize Property System.Boolean IsFixedSize {get;}
IsReadOnly Property System.Boolean IsReadOnly {get;}
IsSynchronized Property System.Boolean IsSynchronized {get;}
Length Property System.Int32 Length {get;}
LongLength Property System.Int64 LongLength {get;}
Rank Property System.Int32 Rank {get;}
SyncRoot Property System.Object SyncRoot {get;}[/code:1]
[code:1]IsPublic IsSerial Name BaseType
----
True True ArrayList System.Object[/code:1]
Et celui pour Get-Member :
[code:1]
TypeName: System.Object[]
Name MemberType Definition
----
Count AliasProperty Count = Length
Address Method System.Object&, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77... Clone Method System.Object Clone()
CopyTo Method System.Void CopyTo(array array, int index), System.Void CopyTo(array array, lo... Equals Method bool Equals(System.Object obj)
Get Method System.Object Get(int )
GetEnumerator Method System.Collections.IEnumerator GetEnumerator()
GetHashCode Method int GetHashCode()
GetLength Method int GetLength(int dimension)
GetLongLength Method long GetLongLength(int dimension)
GetLowerBound Method int GetLowerBound(int dimension)
GetType Method type GetType()
GetUpperBound Method int GetUpperBound(int dimension)
GetValue Method System.Object GetValue(Params int[] indices), System.Object GetValue(int index... Initialize Method System.Void Initialize()
Set Method System.Void Set(int , System.Object )
SetValue Method System.Void SetValue(System.Object value, int index), System.Void SetValue(Sys... ToString Method string ToString()
IsFixedSize Property System.Boolean IsFixedSize {get;}
IsReadOnly Property System.Boolean IsReadOnly {get;}
IsSynchronized Property System.Boolean IsSynchronized {get;}
Length Property System.Int32 Length {get;}
LongLength Property System.Int64 LongLength {get;}
Rank Property System.Int32 Rank {get;}
SyncRoot Property System.Object SyncRoot {get;}[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.052 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Comparaison de deux fichiers CSV