Untenstehendes Programm zeigt zuerst den Inhalt der beiden folgenden csv Dateien:
Inhalt Datei 1:
----------------
Marke,Typ,Farbe,PS
VW,Golf R32,blau,250
Audi,A3,rot,170
BMW,330d,weiss,231
Seat,Leon,rot,170
VW,Polo,silber,90
BMW,335d,schwarz,286
Ford,Focus,rot,200
Ford,Fiesta,weiss,90
Inhalt Datei 2:
----------------
Marke,Typ,Farbe,PS
Audi,A6 3.0 TDI,schwarz,245
VW,Passat,schwarz,250
Seat,Leon,rot,170
Mercedes,350 CDI,silber,220
Toyota,Supra,blau,330
Renault,Clio,dunkelblau,58
BMW,535d,weiss,286
VW,Scirocco,weiss,270
Soweit funktioniert das richtig.
Dann sollen die zwei Variablen $S1 und $S2 die Dritte Spalte der jeweiligen csv-Datei ausgeben.
Spalte3Datei1
-------------
Farbe
blau
rot
weiss
rot
silber
schwarz
rot
weiss
Spalte3Datei2
-------------
Farbe
schwarz
schwarz
rot
silber
blau
dunkelblau
weiss
weiss
leider werden beim Durchlauf des Programms anstatt der Variablen $S2 nur leere Zeilen ausgegeben.
Wenn ich nach Durchlauf in der Kommandozeile nochmal explizit schreibe:
PS H:\> $S2 = $InhaltDatei2 | select-object @{Expression={$_.split(",")[$SpalteDatei2]};Label="Spalte3Datei2"}
PS H:\> $S2
dann wird auch die Palte korrekt ausgegeben, nur nicht im Durchlauf des Programms.
Powershell Programm:
$SpalteDatei1 = "2"
$SpalteDatei2 = "2"
$InhaltDatei1 = Get-Content 'C:\Temp\#18.04.2012 CompareSpecificColumn\Auto.csv'
$InhaltDatei2 = Get-Content 'C:\Temp\#18.04.2012 CompareSpecificColumn\Auto2.csv'
Write-Host
Write-Host "Inhalt Datei 1: "
Write-Host "----------------"
$InhaltDatei1
Write-Host
Write-Host "Inhalt Datei 2: "
Write-Host "----------------"
$InhaltDatei2
Write-Host
$S1 = $InhaltDatei1 | select-object @{Expression={$_.split(",")[$SpalteDatei1]};Label="Spalte3Datei1"}
$S1
Write-Host
Write-Host
$S2 = $InhaltDatei2 | select-object @{Expression={$_.split(",")[$SpalteDatei2]};Label="Spalte3Datei2"}
$S2
Write-Host