Не думаю, что кому-либо нравится тот факт, что и "foreach ($ a in $ null) {}", и "$ null | foreach-object {}" повторяются один раз.К сожалению, нет другого способа сделать это, чем способы, которые вы продемонстрировали.Вы можете быть более точным:
$null | ?{$_} | % { ... }
сокращение ?{$_}
для where-object {$_ -ne $null}
, так как $null
, оцененное как логическое выражение, будет обрабатываться как $false
У меня есть фильтропределено в моем профиле так:
filter Skip-Null { $_|?{ $_ } }
Использование:
$null | skip-null | foreach { ... }
Фильтр такой же, как и функция, за исключением того, что по умолчанию используется блок process {} not end {}.
ОБНОВЛЕНИЕ : Начиная с PowerShell 3.0, $null
больше не повторяется как коллекция.Ууу!
-оизин