Мне кажется странным, что с этим кодом вы будете получать пустые строки. Не могу представить себе сценарий, в котором distinguishedname
пользователя равен нулю. Единственная проблема с вашим кодом, которую я вижу, может быть просто опечаткой в вашем первом вычисленном выражении:
@{Name="DN";Expression+{$_.properties.distinguishedname}}
вместо этого должно быть
@{Name="DN";Expression={$_.properties.distinguishedname}}
Однако это должно было привести к синтаксической ошибке, которую можно было бы легко обнаружить перед выполнением.
Фильтрация пробелов
Самый простой способ PowerShell справиться с этим - использовать простое предложение Where-Object
. В качестве аргумента можно сказать, что GID
может быть пустым / нулевым.
$result | Select-Object @{Name="DN";Expression={$_.properties.distinguishedname}},@{Name="gid";Expression={$_.properties.gidnumber }} | Where-Object{$_.GID} | Sort-Object -Property gid
Нулевое или пустое значение оценивается как False в PowerShell. Where-Object{$_.GID}
разрешит передачу в качестве выходных данных только объектов с заполненным свойством для GID
. Вы получите аналогичные результаты и от строковых статических методов. Это также улучшит читаемость вашего кода.
... | Where-Object{[string]::IsNullOrWhiteSpace($_.GID)} | ...
Также есть [string]::IsNullOrEmpty()
person
Matt
schedule
06.05.2015
Where
, например| Where {$_.someproperty -ne $null}
- person Brock Hensley   schedule 18.09.2013$null
? Объекты, где хотя бы один из них$null
? Объекты, одним из свойств которых является$null
? - person Ansgar Wiechers   schedule 18.09.2013| ? {$_}
в конец строки. - person xXhRQ8sD2L7Z   schedule 20.10.2015