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."
January 25, 2012
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).
About the Author
You May Also Like