Categories

Scripting Games 2011 Commentary: I–Exporting after using a format cmdlet

As the final judging of the Scripting Games takes place today I thought it time to blog about a few things I noticed while judging.  These comments are not about solving the events but about using PowerShell.  These comments are in no particular order – just things I observed.

This is a standard pipeline. I would suggest that you try these snippets to see what is happening.

Get-Process | select -First 3 | Format-Table

There are a number of ways to get this information in to a file

Get-Process | select -First 3 | Export-Csv test1.csv –NoTypeInformation

This stores the whole objects worth of data. Using –NoTypeInformation means that it is returned as a PSCustomObject when we import it.

Alternatively we can do this

Get-Process | select -First 3 | Out-File test1.txt

This stores just what we would have seen on screen – ie the results of the default display

PS> get-content test1.txt

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
     57       3     1764       5196    58     1.64    808 conhost
     30       2      504       2124    20            1404 conhost
     57       3     1760       5156    54     0.20   1688 conhost

When we read the file contents we get a collection of strings.  All object information is lost.

 

Get-Process | select -First 3 | Format-Table | Out-File test2.txt

is equivalent to our out-file example above in that we get strings

 

Get-Process | select -First 3 | Format-Table | export-csv test2.csv

Outputs the formatting objects NOT the data.  Oops.

 

When exporting data to files make sure you are getting what you expect. Don’t export after a format statement. Use Export-Csv if you want objects and Out-File if you just want the data points.

Leave a Reply