Why PowerShell is Like Algebra

With all its punctuation and (parentheses), PowerShell can sometimes seem more like a math exercise than a command-line shell. Here's how to make sense of at least one common "gotcha."

Don Jones

January 25, 2012

1 Min Read
ITPro Today logo

Can you make sense of this?

Get-WmiObject -class Win32_BIOS -computername (Import-CSV file.csv | Select -expand Name)


The parentheses will trip up a lot of folks, but they really just do the same thing they did back in high school algebra: Force PowerShell to do the parenthesized part first. Treat the entire contents of the parens as a separate command. In fact, run it on its own to see what it does - this one assumes you have a CSV file that includes a Name column, which lists computer names. The result will be just the computer names, without a column header. Plain String objects, in other words, which is what the -computerName parameter desires. 

Almost anytime you see parentheses in PowerShell, they're containing one or more commands; PowerShell executes the commands, and replaces the entire parenthetical bit with the results of the commands.

The only exceptions? When creating arrays and parameter blocks:

$array = @(1,2,3)param([string]$name,[string]$path)


Those are two separate uses of parens that don't act as executable parenthetical expressions (exactly).

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