PowerShell Gotchas: Looping with $null
For some obscene reason, PSHv1 will gladly iterate with a $null as an array element in Foreach.
@(
$null, 1, $null, 2) | Foreach { "'$_'"; }
''
'1'
''
'2'
So, in the name of defensive programming, I've taken to manually testing for this case:
@(
$null, 1, $null, 2) | Foreach { if ($_) { "'$_'"; } }
'1'
'2'