Question [Résolu] Import/Export Csv - gestion des colonnes

Plus d'informations
il y a 15 ans 10 mois #6826 par Arthur
tu as test le script avec \&quot;$epo1bis.\&quot;Nom du système\&quot;\&quot; au lieu du $_.\&quot;Nom du système\&quot; ? ca marche?<br><br>Message édité par: bilbao, à: 11/05/10 16:58

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

Plus d'informations
il y a 15 ans 10 mois #6827 par magzz69
Le problème c'est qu'il faut bien que le déclare quelque part?

Là j'ai juste fait une boucle au début de mon script en déclarant epo1bis. Mais je peux pas tester comme ça car j'ai juste crée une boucle test. J'ai fait un write-host pour voir si là, il le retrouvait et oui :)

Sinon ça veut dire que je dois déclarer quelque part un (epo1bis in epo1)

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

Plus d'informations
il y a 15 ans 10 mois #6828 par Arthur
tu peut faire quelque chose du genre :

[code:1] $t = $epo1 |foreach { Where-Object {$_.\&quot;Nom du système\&quot; -eq $epo2bis.Nom } }
[/code:1]
Normalement dans ce cas $_ est l'équivalent de $epo1bis.
Enfin, je dit ca de tête sans console pour le tester donc je me trompe peut être ( c'est la fin de journée je fatigue :P )

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

Plus d'informations
il y a 15 ans 10 mois #6829 par magzz69
J'ai fait un :

[code:1]$t = $epo1 | foreach{Where-Object {$_.\&quot;Nom du système\&quot; -eq $epo2bis.Nom }
write-host $_.\&quot;Nom du système\&quot; }[/code:1]


Là il me met bien aussi sur le prompt tous les Systèmes.

Mais quand j'enlève le write-host pour faire tourner le script j'ai encore la même erreur comme quoi rien n'a été spécifié à \&quot;get-member\&quot; :(

Je redonne tout le script au cas où :

[code:1]$epo1 = ipcsv c:\Powershell\ExtractEPOUtf.csv
$epo2 = ipcsv c:\Powershell\ExtractGLPIUtf.csv
$new = $( foreach($epo2bis in $epo2)
{

$t = $epo1 | foreach{Where-Object {$_.\&quot;Nom du système\&quot; -eq $epo2bis.Nom }}

$t1 = $epo2bis | select *

foreach ($p in Get-Member -InputObject $t -MemberType NoteProperty)
{
Add-Member -InputObject $t1 -MemberType NoteProperty -Name $p.Name -Value $t.$($p.Name) -Force
$t.$($p.Name) = $t1.$($p.Name)

}
$t1
}
)
$new | Export-Csv c:\powershell\merged.csv[/code:1]


EDIT:

Quand je fais un write-host $t il ne me met rien...


Message édité par: magzz69, à: 11/05/10 17:18<br><br>Message édité par: magzz69, à: 11/05/10 17:22

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

Plus d'informations
il y a 15 ans 10 mois #6830 par Vara
Salut,

Es-tu sur que les valeurs que tu compares sont égales?

Tu peux tester via la commande Compare-Object

[code:1]
$epo1 = ipcsv c:\Powershell\ExtractEPOUtf.csv
$epo2 = ipcsv c:\Powershell\ExtractGLPIUtf.csv

Compare-Object $epo1 $epo2 -IncludeEqual

[/code:1]

Fait attention aussi à la casse (majuscule/minuscule) et espace en \&quot;trop\&quot;...

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

Plus d'informations
il y a 15 ans 10 mois #6833 par Laurent Dardenne
magzz69 écrit:

Et je souhaiterais ceci :
Name,City,Age,NC
Preetam,Sng,30,1
Shilpa,Sng,26,1
Paatu,Ah,33,1
Anju,Kh,38,2
Mom,Ah,56,3
Papa,Ah,66,3

Une autre solution :
[code:1]
Function Merge-Object($Base, $Additional) {
#http://www.indented.co.uk/index.php/2009/08/27/merge-object/
ForEach ($Property in $($Additional | Get-Member -Type Property, NoteProperty))
{
$Base | Add-Member -MemberType NoteProperty -Name $Property.Name `
-Value $Additional.$($Property.Name) -ErrorAction SilentlyContinue
}
Return $Base
}

$epo1 = ipcsv c:\temp\ExtractEPOUtf.csv
$epo2 = ipcsv c:\Temp\ExtractGLPIUtf.csv

#Construit une seule collection
$epo1+$epo2|
#regroupe les objets par leurs nom
Group-Object -property name|
#Fusionne les 2 objets regroupé
Foreach-Object {Merge-Object $_.group[0] $_.group[1] }
[/code:1]

Tutoriels PowerShell

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

Temps de génération de la page : 0.072 secondes
Propulsé par Kunena