PowerShell breaks any line that you enter into
its individual units (tokens), and then interprets each token
in one of two ways: as a command or as an expression. The difference is
subtle: expressions support logic and flow control statements (such as
if
, foreach
, and throw
), whereas commands do not.
You will often want to control the way that Windows PowerShell interprets your statements, so Table A1 lists the options available to you.
Table A1. Windows PowerShell evaluation controls
Statement  Example  Explanation 

Precedence control:
 PS > 5 * (1 + 2) 15 PS > (dir).Count 2276
 Forces the evaluation of a command or expression, similar to the way that parentheses are used to force the order of evaluation in a mathematical expression. 
Expression subparse:

PS > "The answer is (2+2)" The answer is (2+2) PS > "The answer is $(2+2)" The answer is 4 PS > $value = 10 PS > $result = $( if($value gt 0) { $true } else { $false }) PS > $result True
 Forces the evaluation of a command or expression, similar to the way that parentheses are used to force the order of evaluation in a mathematical expression. However, a subparse is as powerful as a subprogram and is required only when the subprogram contains logic or flow control statements. This statement is also used to expand dynamic information inside a string. 
List evaluation:

PS > "Hello".Length 5 PS > @("Hello").Length 1 PS > (GetChildItem).Count 12 PS > (GetChildItem ... 
No credit card required