Мне показалось странным, что вы получите пустые строки с этим кодом. Невозможно подумать о сценарии, в котором distinguishedname
пользователя имеет значение NULL. Один вопрос с кодом, который я вижу может быть просто опечатка в первом вычисленного выражения:
@{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
Значение null или empty равно False в PowerShell. Where-Object{$_.GID}
разрешает только объекты с населенным имуществом для GID
для передачи в качестве выходных данных. Вы получите аналогичные результаты и из статических методов. Это также добавило бы читаемость в ваш код.
... | Where-Object{[string]::IsNullOrWhiteSpace($_.GID)} | ...
Существует также [string]::IsNullOrEmpty()
Попробуйте добавить 'Where' заявление как' | Где {$ _. Someproperty -ne $ null} ' –
Что вы подразумеваете под« пустой линией »? Вы выбираете несколько свойств из объектов, возвращаемых вами. Вы хотите опустить объекты, где все свойства «$ null»? Объекты, где хотя бы один из них «$ null»? Объекты, где одно конкретное свойство «$ null»? –
Подобно комментарию Brocks, добавьте '| ? {$ _} 'до конца строки. – xXhRQ8sD2L7Z