Problem
You want to store the output of a command in a CSV file for later processing. This is helpful when you want to export the data for later processing outside PowerShell.
Solution
Use PowerShell’s ExportCsv cmdlet to save the output of a command into a CSV file. For example, to create an inventory of the patches applied to a system by KB number (on preVista systems):
cd $env:WINDIR GetChildItem KB*.log | ExportCsv c:\temp\patch_log.csv
You can then review this patch log in a tool such as Excel, mail it to others, or do whatever else you might want to do with a CSV file.
Discussion
The CSV file format is one of the most common formats for exchanging semistructured data between programs and systems.
PowerShell’s ExportCsv cmdlet provides an easy way to export data from the PowerShell environment, while still allowing you to keep a fair amount of your data’s structure. When PowerShell exports your data to the CSV, it creates a row for each object that you provide. For each row, PowerShell creates columns in the CSV that represent the values of your object’s properties.
One thing to keep in mind is that the CSV file format supports only plain strings for property values. If a property on your object isn’t actually a string, PowerShell converts it to a string for you. Having PowerShell convert rich property values (such as integers) to strings, however, does mean that a certain amount of information is not preserved. If your ultimate goal is to load this unmodified data again in PowerShell, the ExportCliXml cmdlet provides a much better alternative.