Вопрос заключается в том, что внутри блока % { }
$_
не содержит значение столбца b
, а скорее объект с b
свойством. Когда вы запускаете [string]::IsNullOrEmpty($_)
, вы проверяете, является ли этот объект пустой или пустой, ни одна из которых не является истинной.
Для того, чтобы проиллюстрировать, что происходит, сравните результаты ...
Import-Csv .\test.csv | Get-Member
... с результатами ...
Import-Csv .\test.csv | select b | Get-Member
... с результатами ...
Import-Csv .\test.csv | select -ExpandProperty b | Get-Member
Одно из решений заключается в проверке, если b
свойство объекта производства select
(А не сам объект) является нулевым или пустым:
import-csv test.csv | select b | % {
Write-Host "$_ $([string]::IsNullOrEmpty($_.b))"
}
Другим решением является передача только значение столбца b
к % { }
блока:
import-csv test.csv | select -ExpandProperty b | % {
Write-Host "$_ $([string]::IsNullOrEmpty($_))"
}
Ahhhh взял мой ответ из-под меня. – Matt
@Matt Меня зовут Мэтт. Мы были склонны отвечать таким образом. – BACON