Вот как формирует выходной сигнал 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 это будет работать, даже если команда возвращает несколько объектов.
Нет изменений в выходе :-( – cvandal
Произошло какое-то тестирование и сделало обновление. Попробуйте сейчас. – mjolinor