Prof. Powershell

Wide Load

See more and get more with the Format-Wide cmdlet.

In the CMD shell, I was always a big fan of the /w switch in the DIR command. This let me see a lot of files all at once by using the wide format.

I can achieve a similar result in Windows PowerShell by using the Format-Wide cmdlet:

PS C:\> dir c:\work\*.ps1 | Format-Wide

Directory: Microsoft.PowerShell.Core\FileSystem::C:\work

beg8.ps1             contest.ps1
demo.ps1             demo1.ps1
for-test.ps1         Get-SQLProfiler.ps1
jobtest.ps1          join-objectdev.ps1
junk.ps1             myscript.ps1
SQLProfiler.ps1      test-print.ps1


Unlike the CMD shell, I can take this a step further and specify the number of columns:

PS C:\> dir c:\work\*.ps1 | Format-Wide -Column 3

Directory: Microsoft.PowerShell.Core\FileSystem::C:\work

beg8.ps1          contest.ps1          demo.ps1
demo1.ps1         for-test.ps1         Get-SQLProfiler.ps1
jobtest.ps1       join-objectdev.ps1   junk.ps1
myscript.ps1      SQLProfiler.ps1      test-print.ps1

Or I can tell Format-Wide to do the best job possible using the -autosize parameter:

PS C:\> dir c:\work\*.ps1 | Format-Wide -autosize

I'll omit the results here because they probably won't format well on the page, but I will tell you I got 5 columns. The autosize and column parameters are mutually exclusive. You'll notice I didn't have to specify a property. For most objects, Format-Wide has a reasonable default assigned. But you can use anything you want.

Here's a variation:

PS C:\> dir c:\work\ | select -Property Extension -unique | sort extension | format-wide -Column 3

           .105_x64         .application
.bat       .clg             .css
.csv       .dll             .exe
.gif       .hta             .htm
.html      .InstallLog      .InstallState
.iso       .JPG             .lnk
.log       .pcv             .pdf
.pptx      .ps1             .rar
.trc       .txt             .vb
.vbs       .wav             .wim
.xml       .zip

In my Work directory I got a list of all file extensions, sorted and displayed in 3 columns. You can format any PowerShell command as wide. Here's an example that also shows how little typing is actually required by taking advantage of aliases:

PS C:\> ps | ? {$_.ws -gt 100MB} | sort ws -des | fw -c 3

svchost         SWin         powershell_ise
powershell      firefox      WINWORD

These are the processes with a working set size of greater than 100MB.

So the next time you're tired of scrolling back to see something, remember Format-Wide.


About the Author

Jeffery Hicks is a Microsoft MVP and an IT veteran with almost 20 years of experience, much of it spent as an IT consultant specializing in Windows server technologies. He works today as an independent author, trainer and consultant. His latest book is Managing Active Directory with Windows PowerShell 2.0: TFM (SAPIEN Press 2011). Follow Jeff on Twitter and on his blog.

Reader Comments:

Sat, Aug 21, 2010 Donald San Jose CA

How about a "wide" that sorts by vertical columns instead of horizontal rows?

Add Your Comment Now:

Your Name:(optional)
Your Email:(optional)
Your Location:(optional)
Comment:
Please type the letters/numbers you see above