Verwenden des Cmdlet \"Export-Csv\"

Speichern von Daten als Datei mit durch Kommas voneinander getrennten Werten

Mit dem Cmdlet Export-Csv können Daten ganz einfach als eine Datei mit durch Kommas voneinander getrennten Werten (CSV-Datei) gespeichert werden. Sie rufen einfach nur Export-Csv gefolgt von dem Pfad zur CSV-Datei auf. Der folgende Befehl beispielsweise verwendet Get-Process, um Informationen über alle auf dem Computer ausgeführten Prozesse zu ermitteln, und schreibt die Daten mit Hilfe von Export-Csv dann in die Datei "C:\Scripts\Test.txt":

Get-Process | Export-Csv c:\scripts\test.txt

Die resultierende Textdatei sieht etwa wie folgt aus:

#TYPE System.Diagnostics.Process
__NounName,Name,Handles,VM,WS,PM,NPM,Path,Company,CPU,FileVersion,ProductVersion,Description,Product,BasePriority,
ExitCode,HasExited,ExitTime,Handle,HandleCount, Id,MachineName,MainWindowHandle,MainWindowTitle,MainModule,
MaxWorkingSet,MinWorkingSet,Modules,NonpagedSystemMemorySize,
NonpagedSystemMemorySize64, PagedMemorySize,PagedMemorySize64,PagedSystemMemorySize,PagedSystemMemorySize64,PeakPagedMemorySize,
PeakPagedMemorySize64,PeakWorkingSet,PeakWorkingSet64, PeakVirtualMemorySize,PeakVirtualMemorySize64,
PriorityBoostEnabled,PriorityClass,PrivateMemorySize,PrivateMemorySize64,PrivilegedProcessorTime,ProcessName,
ProcessorAffinity, Responding,SessionId,StartInfo,StartTime,SynchronizingObject,
Threads,TotalProcessorTime,UserProcessorTime,VirtualMemorySize,VirtualMemorySize64,EnableRaisingEvents,
StandardInput,StandardOutput,StandardError,WorkingSet,WorkingSet64,Site,Container
Process,alg,110,33714176,3698688,1273856,5400,C:\WINDOWS\System32\alg.exe,"Microsoft Corporation",0.046875,
"5.1.2600.2180 (xpsp_sp2_rtm.040803-2158)",5.1.2600.2180,"Application Layer Gateway Service",
"Microsoft? Windows? Operating System",8,,False,,2140,110,788,.,0,,"System.Diagnostics.ProcessModule
(alg.exe)",1413120,204800,System.Diagnostics.ProcessModuleCollection,5400,5400,1273856,1273856,65756,65756,
1347584,1347584,3747840,3747840,35024896,35024896,True,Normal,1273856,1273856,00:00:00.0312500,alg,1,True,0,
System.Diagnostics.ProcessStartInfo,"5/19/2006 7:37:03 AM",,System.Diagnostics.ProcessThreadCollection,
00:00:00.0468750,00:00:00.0156250,33714176,33714176,False,,,,3698688,3698688,,

Standardmäßig werden die Daten im ASCII-Format gespeichert. Falls Sie die Daten lieber im Unicode-Format (oder UTF7 oder UTF8) speichern möchten, gehen Sie wie folgt vor. Fügen Sie den Parameter –encoding gefolgt von dem gewünschten Format hinzu:

Get-Process | Export-Csv c:\scripts\test.txt -encoding "unicode"

Vielleicht haben Sie bemerkt, dass die erste Zeile in der resultierenden CSV-Datei den .NET-Objekttyp ausgibt:

#TYPE System.Diagnostics.Process

Wenn Sie den .NET-Objekttyp in Ihrer Ausgabedatei nicht anzeigen wollen, geben Sie einfach den Parameter –notype an:

Get-Process | Export-Csv c:\scripts\test.txt -notype

Ein weiterer praktischer Parameter ist –force. Angenommen, "Test.txt" ist eine schreibgeschützte Datei: Die Benutzer können auf den Dateiinhalt zugreifen, ihn aber nicht ändern. Das ist praktisch, bis Sie Export-Csv einsetzen und den Inhalt der Datei aktualisieren wollen. Wenn Sie versuchen, Text in eine schreibgeschützte Datei zu exportieren, passiert Folgendes:

PS C:\Documents and Settings\gstemp> Get-Process | Export-Csv c:\scripts\test.txt
Export-Csv : Access to the path 'C:\scripts\test.txt' is denied.

Aus diesem Grund sollten Sie -force verwenden. Angenommen, Sie fügen Ihrem Exportbefehl den Parameter -force hinzu:

Get-Process | Export-Csv c:\scripts\test.txt -force

In diesem Fall löscht Windows PowerShell vorübergehend das Schreibschutzattribut für die Datei, aktualisiert den Inhalt und aktiviert dann wieder das Schreibschutzattribut. Das Ergebnis: Die Datei wird aktualisiert, und nachdem Export-Csv abgeschlossen ist, wird die Datei wieder als schreibgeschützt gekennzeichnet.

Aliase für "Export-Csv"

  • epcsv