2013-09-18 5 views
0

Я написал сценарий, чтобы найти GID-й в AD, это работает нормально, проблема у меня есть отфильтровывать пустые (нулевые строки)Удалить пустые строки Powershell выход

$searcher=[adsisearcher]"(objectCategory=user)" 
$result = $searcher.FindAll() 
$result | Select-Object @{Name="DN";Expression+{$_.properties.distinguishedname}},@{Name="gid";Expression={$_.properties.gidnumber }} |Sort-Object -Property gid 
+1

Попробуйте добавить 'Where' заявление как' | Где {$ _. Someproperty -ne $ null} ' –

+0

Что вы подразумеваете под« пустой линией »? Вы выбираете несколько свойств из объектов, возвращаемых вами. Вы хотите опустить объекты, где все свойства «$ null»? Объекты, где хотя бы один из них «$ null»? Объекты, где одно конкретное свойство «$ null»? –

+0

Подобно комментарию Brocks, добавьте '| ? {$ _} 'до конца строки. – xXhRQ8sD2L7Z

ответ

3

Мне показалось странным, что вы получите пустые строки с этим кодом. Невозможно подумать о сценарии, в котором 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()

-1

Сортировать объект имеет - уникальное свойство, которое удалит большинство пустых строк, все, кроме одного, как вы уже догадались. Вы также можете трубить до

where-object -ne '`n' 

или что-то в этом роде, сообщите мне, если я должен это уточнить.

+1

Это даже не действительный код PowerShell. –

+0

'-unique' работал спасибо! – JoeRod

Смежные вопросы