bommi1961
Goto Top

2 Excel Dateien mit Powershell vergleichen

Hallo zusammen,

ich benötige mal Hilfe, ich würde gerne mit Powershell 2 Excel Dateien vergleichen. ´
Datei 1 hat nur Werte in der Spalte A stehen. (z. B. Leo, Reiner, Rosi......)

Datei 2 hat Werte in A und B. (A: Auto, Fahrrad, Schiff,.... B: Rose, Reiner, Leo....)

Ich benötige nun als Ausgabe die Werte aus Datei 2 Spalte A, wenn die Werte aus Datei 1 und 2 in der Spalte B gleich sind mit A (aus Datei 1)


VG

Content-Key: 13181667434

Url: https://administrator.de/contentid/13181667434

Printed on: April 27, 2024 at 08:04 o'clock

Mitglied: 12168552861
Solution 12168552861 Mar 16, 2024 updated at 12:32:30 (UTC)
Goto Top
CSV1

"Name"  
"Max"  
"Andreas"  
"Hilde"  

CSV2

"Artikel";"Name"  
"Auto";"Max"  
"Schiff";"Michi"  
"Fahrrad";"Hilde"  

Skript

$csv1 = Import-Csv file1.csv -delimiter ";"  
$csv2 = Import-Csv file2.csv -delimiter ";"  

Compare-Object $csv2 $csv1 -Property Name -IncludeEqual -ExcludeDifferent -Passthru | select -ExpandProperty Artikel
https://tio.run/##dZDLTsQwDEX3@QqrQppVkKZbhDTVMIhZ8JD4gtC4aga3CU4yDBL/Xp ...

Result

Auto
Fahrrad
Member: Bommi1961
Bommi1961 Mar 16, 2024 at 14:27:31 (UTC)
Goto Top
Danke schon mal hilft mir weiter, aber was muss ich machen damit neben Auto auch Max steht?
Mitglied: 12168552861
12168552861 Mar 16, 2024 updated at 14:35:40 (UTC)
Goto Top
Zitat von @Bommi1961:

Danke schon mal hilft mir weiter, aber was muss ich machen damit neben Auto auch Max steht?

Nur den Select auf die Property erweitern
# ....
Compare-Object $csv2 $csv1 -Property Name -IncludeEqual -ExcludeDifferent -Passthru | select Artikel,Name
https://tio.run/##dVDBSsNAEL3vVwxB6MUVmmsRGtqKPdQKfsGanZDVSTad3a0V/Pc4my ...
Member: Bommi1961
Bommi1961 Mar 16, 2024 at 14:46:30 (UTC)
Goto Top
$csv1 = Import-Csv c:\Temp\A22.csv -delimiter ";"    
$csv2 = Import-Csv C:\Temp\B.csv -delimiter ";"  

Compare-Object $csv2 $csv1 -Property Name -IncludeEqual -ExcludeDifferent -Passthru | select -ExpandProperty Artikel

Import-Csv : Das Element """ ist bereits vorhanden.  
In Zeile:6 Zeichen:9
+ $csv2 = Import-Csv C:\Temp\B.csv -delimiter ";"  
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Import-Csv], ExtendedTypeSystemException
    + FullyQualifiedErrorId : AlreadyPresentPSMemberInfoInternalCollectionAdd,Microsoft.PowerShell.Commands.ImportCsvCommand


ERROR:
select : Die Artikel-Eigenschaft kann nicht gefunden werden.
In Zeile:9 Zeichen:87
+ ... udeEqual -ExcludeDifferent -Passthru | select -ExpandProperty Artikel
+                                            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (@{";Adriana Alt...deIndicator===}:PSObject) [Select-Object], PSArgumentException  
    + FullyQualifiedErrorId : ExpandPropertyNotFound,Microsoft.PowerShell.Commands.SelectObjectCommand

Dann habe ich mal das Probiert.
$csv1 = Import-Csv c:\Temp\A22.csv -delimiter ";"    
$csv2 = Import-Csv C:\Temp\B.csv 

Compare-Object $csv2 $csv1 -Property Name -IncludeEqual -ExcludeDifferent -Passthru | select -ExpandProperty Artikel

ERROR:
select : Die Artikel-Eigenschaft kann nicht gefunden werden.
In Zeile:9 Zeichen:87
+ ... udeEqual -ExcludeDifferent -Passthru | select -ExpandProperty Artikel
+                                            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (@{";Adriana Alt...deIndicator===}:PSObject) [Select-Object], PSArgumentException  
    + FullyQualifiedErrorId : ExpandPropertyNotFound,Microsoft.PowerShell.Commands.SelectObjectCommand 
Mitglied: 12168552861
12168552861 Mar 16, 2024 updated at 15:04:54 (UTC)
Goto Top
Eindeutige Spaltennamen, delimiter, etc. musst du natürlich an deine CSV Dateien anpassen ... Nicht nur Copy n Paste machen sondern Funktionen nachschlagen und Code verstehen erst dann handeln!
Import-CSV
Compare-Object

CSV Ist-Zustand hier posten ... Aber bitte nur mit Codetags!
Member: Bommi1961
Bommi1961 Mar 16, 2024 at 15:24:25 (UTC)
Goto Top
Vielen Dank für Deine Hilfe und noch ein schönes Wochenende.