Ich habe eine CSV mit mehr als 100 Spalten. Manchmal, wenn ich das Skript ausführe, möchte ich ein paar Spalten auswählen, aber manchmal brauche ich alle Spalten. Es wird in ein | geschrieben werden Pipe-getrennte Datei.Erhalten Sie alle Spalten in einer Reihe von Import-CSV mit anderen Trennzeichen
Gibt es einen Befehl/Eigenschaften für Import-CSV, die es ermöglichen würden, eine vollständige Zeile ohne Angabe aller Header zu erhalten?
Ich habe den folgenden Code versucht, aber ich habe eine hängende | Pipe auf die Zeilen, wenn ich alle Spalten möchte.
# powershell -ExecutionPolicy ByPass -File .\test.ps1 -NoExit -AllColumns
param(
[switch]$AllColumns = $false
)
$writer = New-Object IO.StreamWriter('output.txt')
Import-Csv 'test.csv' | ForEach-Object {
$writeLine = ""
if($_.("Name") -eq "John") {
if($AllColumns) {
#$writeLine = All Columns with '|' delimiter
foreach ($property in $_.PSObject.Properties) {
$writeLine = ($writeLine + $property.Value + '|')
# Or this - $writeLine = ($writeLine, $property.Value -join '|')
}
} else {
$writeLine = ($_.("Name"), $_.("Code") -join '|')
}
}
$writer.WriteLine($writeLine)
}
$writer.Close()
'Import-Csv' und' Export-CSV' haben die '-Delimiter' Parameter, die Sie das Pipe-Zeichen verwenden könnten eher als '-join' – BenH