Question
[Résolu] Import/Export Csv - gestion des colonnes
- Arthur
- Hors Ligne
- Membre elite
-
Réduire
Plus d'informations
- Messages : 226
- Remerciements reçus 0
il y a 15 ans 10 mois #6826
par Arthur
Réponse de Arthur sur le sujet Re:Import/Export Csv - gestion des colonnes
tu as test le script avec \"$epo1bis.\"Nom du système\"\" au lieu du $_.\"Nom du système\" ? ca marche?<br><br>Message édité par: bilbao, à: 11/05/10 16:58
Connexion ou Créer un compte pour participer à la conversation.
- magzz69
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 18
- Remerciements reçus 0
il y a 15 ans 10 mois #6827
par magzz69
Réponse de magzz69 sur le sujet Re:Import/Export Csv - gestion des colonnes
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)
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.
- Arthur
- Hors Ligne
- Membre elite
-
Réduire
Plus d'informations
- Messages : 226
- Remerciements reçus 0
il y a 15 ans 10 mois #6828
par Arthur
Réponse de Arthur sur le sujet Re:Import/Export Csv - gestion des colonnes
tu peut faire quelque chose du genre :
[code:1] $t = $epo1 |foreach { Where-Object {$_.\"Nom du système\" -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
)
[code:1] $t = $epo1 |foreach { Where-Object {$_.\"Nom du système\" -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
Connexion ou Créer un compte pour participer à la conversation.
- magzz69
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 18
- Remerciements reçus 0
il y a 15 ans 10 mois #6829
par magzz69
Réponse de magzz69 sur le sujet Re:Import/Export Csv - gestion des colonnes
J'ai fait un :
[code:1]$t = $epo1 | foreach{Where-Object {$_.\"Nom du système\" -eq $epo2bis.Nom }
write-host $_.\"Nom du système\" }[/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é à \"get-member\"
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 {$_.\"Nom du système\" -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
[code:1]$t = $epo1 | foreach{Where-Object {$_.\"Nom du système\" -eq $epo2bis.Nom }
write-host $_.\"Nom du système\" }[/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é à \"get-member\"
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 {$_.\"Nom du système\" -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.
- Vara
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 30
- Remerciements reçus 0
il y a 15 ans 10 mois #6830
par Vara
Réponse de Vara sur le sujet Re:Import/Export Csv - gestion des colonnes
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 \"trop\"...
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 \"trop\"...
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 15 ans 10 mois #6833
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Import/Export Csv - gestion des colonnes
magzz69 écrit:
[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]
Une autre solution :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
[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
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- [Résolu] Import/Export Csv - gestion des colonnes