Data Export with PowerShell: Best Practices and Advanced Techniques

This is the 7th post from the Data Manipulations with PowerShell series, where we are diving into the specific phase of data operations processes and apply/use PowerShell along the way.

Previous posts:

  1. Empower your Data Retrieval with PowerShell
  2. Make your Data Processing more efficient with PowerShell
  3. Data Transformation Made Easy with PowerShell – Part 1Part 2
  4. PowerShell for Data Analysis: A Practical Guide to Extracting Insights from Your Data
  5. Making Your Data Come Alive: A Practical Guide to Data Visualization with PowerShell

Data Export is all about extracting data from source and saving/sending to another system or service. Typically, it is the last phase of the data manipulation activities. You retrieve data, process it, then transform it if needed, run some analysis and visualization and then export it. Data export is fulfilling couple of the use cases, such as creating backup, migrating data between systems, sharing it with other applications and services, generating reports, etc.

Out of the Box

There are couple of “out of the box” cmdlets that will fit our exporting use cases. Cmdlets can be grouped in two categories redirect cmdlets (Out-File, Tee-Object) & export cmdlets(Export-Clixml, Export-Csv).

Redirect Cmdlets

There are 3 ways to redirect output in the PowerShell universe. An ancient output redirection operator – “>” and “>>“. “>” redirects output to the text file and “>>” – appends output to the file without overwriting it. Functionality wise they work the same way as Out-File without any parameters.

$Dataset4 | select-Object -First 3 | Format-Table
$Dataset4 > output.txt
$Dataset4 >> output1.txt
$Dataset4 | Out-File .\output2.txt
ii .\output.txt, .\output1.txt, .\output2.txt

Another option is the Tee-Object cmdlet. Redirects or saves command output in a file or variable and also sends it down the pipeline at the same time.

And the last but definitely not the least one is Out-File. This is the most PowerShell like way to output data. As mentioned previously, if you use the cmdlet without any parameters it will work the same way as redirect operators. It allows save data to a text file or other file formats. Please keep in mind that this cmdlet is designed to work with text data only. If you try to use it with non-text data, you might end up with unexpected results or errors.

Export Cmdlets

Both of the cmdlets are part of the PowerShell.Utility module (For more details please refer to Unleashing the Full Potential of the PowerShell.Utility Module).

Export-CliXML creates XML-based representation of an object or objects and stores it in a file.

Export-Csv creates a CSV file of the objects. Each object is a row that includes a character-separated list of the object’s property values. This cmdlet is used most often as CSV format is widely support by other applications.

Community Provided

Modules with *output* & *export* in name description and tags – 911.

I would like to highlight few of them.

  1. PSParquet by Axel Bøg Andersen – import and export objects to parquet format.
  2. PS-Markdown by Sam Petch (aka Invertee) – outputting markdown formatted documents.
  3. ConvertTo-Markdown by Jimmy Briggs (aka jimbrig) – designed to accept pipelined output and create a markdown document.
  4. EZOut by James Brundage (aka StartAutomating) – easily author rich format files to customize PowerShell output.
  5. InputOutput by Cansin Aldanmaz (aka haidouks) – module will help you in advanced level I/O operations.


If you are following along through the Data Manipulations with PowerShell series, by this time you already see that PowerShell provides just enough functionality to cover your task at hand. As for the data export we are presented with few (but universal) options and data formats and with this solid foundation community is creating and expanding functionalities above and beyond.

Next: Streamlining Data Management with PowerShell (Coming soon…)

Data icons created by Freepik – Flaticon.

Thanks a lot for reading.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.