Question Comparaison de deux fichiers CSV

Plus d'informations
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

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

Plus d'informations
il y a 11 ans 2 mois #18732 par Philippe
bonjour Helongh

un premier exemple pris ici

[code:1]$list = new-object system.collections.arraylist
$list.Add((\&quot;Elem1x\&quot;, \&quot;Elem1y\&quot;, \&quot;Elem1z\&quot;«»)) | out-null
$list.Add((\&quot;Elem2x\&quot;, \&quot;Elem2y\&quot;«»)) | out-null
$list[0][0]
$list[1][0][/code:1]

je reçois uniquement la longueur de chaque chaîne

comme tu le vois au dessus l'accès au données ce fait avec les crochets \&quot;[]\&quot; et non par un nom de propriété

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

Plus d'informations
il y a 11 ans 2 mois #18733 par Philippe
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 \&quot;c:\names.csv\&quot;
[/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.

Plus d'informations
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 = \&quot;C:\Users\resultat.csv\&quot;
[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 \&quot;,\&quot; -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.

Plus d'informations
il y a 11 ans 2 mois #18736 par Philippe
peut tu faire ceci et nous renvoyer le resultat stp :
[code:1]$List.gettype()
# et aussi
$List | Get-Member[/code:1]

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

Plus d'informations
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&amp;, 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
Propulsé par Kunena