Bonjour,
Je me bats depuis 2 jours avec script Powershell, qui lit en entrée 2 fichiers CSV:
$AD_computers=Import-Csv "hostAD.csv"
$filetoalalyse=Import-Csv "hostEPO.csv"
hostAD.csv
==> contient le hostname de la machine, suivie de la dernier date de login
"Name","Stamp"
"Host1","28/01/2013 05:33:01"
"Host2","28/01/2013 05:33:01"
"Host3","28/01/2013 05:33:01"
"Host4","28/01/2013 05:33:01"
hostEPO.csv
==> contient aussi le hostname, mais avec des infos en plus
"Name","info1","info2","info3"
"Host1","ffff","ddd,"dddd"
"Host4","hhhhh","jjjj","lllll"
Je precise que mes 2 fichiers CSV contiennent 40 000 entrées.
Mon but serait de comparer ces fichiers, afin d'obtenir en sortie des fichiers:
- Hostname que l'on retrouve dans hostAD.csv et dans hostEPO.csv ==> dans ce cas, mon fichier de sortie devra contenir la ligne correspondante de hostEPO.csv
- Hostname j'ai dans le CSV hostAD.csv mais pas dans hostEPO.csv
dans ce cas, mon deuxieme fichier de sortie, devra juste contenir l'information de ligne hostAD.csv
-Hostname present dans hostEPO.csv mais pas dans hostAD.csv
danc ce as, mon troisieme fichier devra contenir la ligne correspondante de hostEPO.csv
Mon soucis est que 'jarrive bien accéder aux informations de mes CSV.
Mais par soucis d'optimisation, puisque j'ai 2 fois 40 000 entrée à traiter, j'aimerai pouvoir supprimer un élément de mes tableaux
$AD_computers et $filetoalalyse
Pour se faire, j'utilise
$AD_computrers.remove("Host1") par exemple, mais cela ne fonctionne pas!
pourtant sur le site
http://technet.microsoft.com/en-us/l.../ee692802.aspx
ils utilisent cette fonctione pour supprimer un alement d'un tableau.
J'aimeria optimiser ce code en supprimant les elements deja traité, afin de diminuer les recherche dans mes tableaux.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 $detectheader=1 foreach ($adc in $AD_computers){ $booladc=1 $adc.name=$adc.name.ToUpper() foreach ($fta in $filetoalalyse){ $fta.name= $fta.name.ToUpper() if($fta.name.contains($adc.name) -and ($adc.name -ne "")){ $booladc=1 $fta.name + "," +"$fta.info1+","+fta.info2+","+$fta.info3 >> $AD_IN_EPO >> $AD_IN_EPO break } else { $booladc=2 } } if ($booladc -eq 2){ $adc.name >> $AD_NOTIN_EPO } }
Mais je ne trouve rien sur le ent pour m'aider :-/
Vous avez une solution???
Merci d'avance!
Partager