Q. Should I ever use Write-Host in PowerShell?Q. Should I ever use Write-Host in PowerShell?

You should rarely use the Write-Host cmdlet. Write-Host puts content directly on the screen. If that's all you need to do, then you can use it.

Don Jones

July 7, 2010

1 Min Read
Pen on a paper with a chart on it

Q. Should I ever use Write-Host in PowerShell?

A. You should rarely use the Write-Host cmdlet. Write-Host puts content directly on the screen. If that's all you need to do, then you can use it. But here's the problem: Suppose you write a script, and it uses Write-Host to output everything. Let's say that the output consists of information on a computer, like its BIOS serial number and OS version number. Your script might look like this:

$os = gwmi win32_operatingsystem$bios = gwmi win32_bioswrite-host ($os.buildnumber)write-host ($bios.serialnumber)

The problem with that is you can't repurpose the script output in any way. If your script was named Get-Info.ps1, you couldn't do this:

./Get-Info | Export-CSV info.csv

Why not? Because there's nothing being placed into the pipeline by your script. However, if you constructed a custom object to hold your output, and wrote that to the pipeline, you'd open up a world of possibilities:

$os = gwmi win32_operatingsystem$bios = gwmi win32_bios$obj = new-object psobject$obj | add-member noteproperty OSBuild ($os.buildnumber)$obj | add-member noteproperty BIOSSerial ($bios.serialnumber)write-output $obj

Now, you could pipe the script's output to any other cmdlet, like Export-CSV, Format-Table, and so on. It's a much more flexible way to produce output.

Do you have a Windows PowerShell question? Find more PowerShell FAQs, articles, and other resources at windowsitpro.com/go/DonJonesPowerShell.

Sign up for the ITPro Today newsletter
Stay on top of the IT universe with commentary, news analysis, how-to's, and tips delivered to your inbox daily.

You May Also Like