Why PowerShell is Like Algebra

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).

Please or Register to post comments.

What's PowerShell with a Purpose Blog?

Don Jones demystifies Windows PowerShell.

Blog Archive

Sponsored Introduction Continue on to (or wait seconds) ×