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.
July 7, 2010
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.
About the Author
You May Also Like