2013-11-13 5 views
2

Я возвращаю свойство mail группы рассылки в Active Directory, используя команду ниже в PowerShell.Удалить пустое пространство из вывода PowerShell

Get-ADGroup $GroupName -Properties Mail | Select-Object Mail | Format-Wide 

Результат выглядит (звездочками, используемых для представления пустого пространства):

* 
* 
[email protected] 
* 
* 

Есть ли способ, что я могу удалить пробельные добавленный в начале и в конце вывода?

ответ

5

Я думаю, что это должно работать (V2):

(Get-ADGroup $GroupName -Properties Mail | Select-Object Mail | Format-Wide | out-string).split("`n") -match '\S' 

Edit: это гораздо сложнее, чем это должно быть.

(Get-ADGroup $GroupName -Properties Mail | Select-Object Mail | Format-Wide | Out-String).trim() 
+0

Нет изменений в выходе :-( – cvandal

+0

Произошло какое-то тестирование и сделало обновление. Попробуйте сейчас. – mjolinor

0

Вот как формирует выходной сигнал PowerShell. Я несколько раз жаловался на избыточные пустые строки до и после вывода. Если вы хотите этого избежать, вы сами форматируете выход. Вы можете сделать это так:

$res = @(Get-ADGroup $GroupName -Properties Mail | Select-Object Mail) 
for ($i = 0; $i -lt $res.Length - 1 + 4; $i += 4) { 
    "{0,-28} {1,-28} {2,-28} {3,-28}" -f $res[$i].Mail,$res[$i+1].Mail,$res[$i+2].Mail,$res[$i+3].Mail 
} 

Это предполагает, что ваша текущая консоль имеет ширину 120 символов. Если это 80, измените -28 выше на -18.

BTW Ключевым моментом здесь является то, что PowerShell имеет дело с объектами, и когда он отображает эти объекты на экран, у него есть механизм форматирования, который определяет такие вещи, как пустые строки до и после вывода. Если вам не нравится форматирование по умолчанию PowerShell, вы можете форматировать объекты (отображая любые свойства, которые вы хотите) по своему усмотрению, но это немного больше.

Все, что сказал, если команда возвращает только один объект, то почему бы не просто сделать это:

(Get-ADGroup $GroupName -Properties Mail).Mail 

Select-Object Mail, Format-Wide и Out-String не нужны. Heck, с PowerShell V3 это будет работать, даже если команда возвращает несколько объектов.

+0

Я пробовал ваше решение и получил следующую ошибку: Не удалось индексировать объект типа System.Management.Automation.PSObject – cvandal

+0

Вы получите только один результат: OK, попробуйте еще раз с обновленным ответом. –

+0

Теперь нет ошибок, но он возвращает пустую строку. – cvandal

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