2014-12-29 2 views
0

Это продолжение из моего предыдущего вопроса. Я последовал за некоторыми советами о том, как окрасить части слов, но теперь, когда у меня есть этот формат с «nonewline», списки управляющих групп теперь все идут в одной строке по сравнению с их собственными.Nonewline messes up output для Powershell

Других слов, он печатает так:

Управляющей группы: .... Descripton: .... Управление групп: .... Описание: ....

Я пробовал играя с новой строкой в ​​разных положениях, но я не хочу большого пустого пространства между каждой управляющей группой, которую контролирует один пользователь. Я просто хочу распечатку как следует:

Управляющей группы: ... Описание: ...

(NOBREAK)

Управляющей группы: ... Описание: ...

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

if ($owned -eq $Null){ 
$owned | % {write-host "Managing Group: " -nonewline} 
$owned | % {write-host "None Found " -foreground red -nonewline} 
$owned | % {write-host "Group Description: " -nonewline} 
$owned | % {write-host "None Provided " -foreground red } 
write-host "`n" 
} 

elseif ($description -eq $Null){ 
$owned | % {write-host ("Managing Group: " + $_.name + "Group Description: ") -nonewline} 
$owned | % {write-host "None Provided " -foreground red} 
write-host "`n" 

} 
else { 
$owned | % {write-host ("Managing Group: " + $_.name + "Group Description: " + $_.description - replace "`r`n", " ")} 
Write-host "`n" 
} 
+0

Что произойдет, если вы удалите строки, содержащие 'записи хоста«\ 'п» '? –

+0

Они печатаются одинаково: aka: Управляющая группа ..Описание..Управление группой..Описание в одной строке. – narue1992

+0

Прежде чем я изменил свой формат, чтобы использовать «nonewline», чтобы получить цвет переднего плана, они правильно печатались. – narue1992

ответ

1

Из того, что я понимаю, вы говорите, что разрыв слишком важен между двумя группами управляющих групп. Я думаю, что вопросы, идет от использования

write-host "`n" 

Write-хост уже выдает символ новой строки, и

"`n" 

является второй символ новой строки, следовательно, большой разрыв.

В вашем первом блоке кода, следующем за if (который я бы написал, как это, как $ owned, считается равным $ null, поэтому его передача в foreach на самом деле не будет делать ничего, кроме того,

if ($owned -eq $Null){ 
    write-host "Managing Group: " -nonewline 
    write-host "None Found " -foreground red -nonewline 
    write-host "Group Description: " -nonewline 
    write-host "None Provided " -foreground red 
} 

последнего write-host не имеет параметра -nonewline, поэтому будет добавлена ​​новая строка.

Если повторяется только проверить результат будет:

Managing Group: None Found Group Description: None Provided 
Managing Group: None Found Group Description: None Provided 

Та же идея должна быть применена к другим кодовых блоков после ELSEIF и еще.

Update

Это может помочь исправить вторую часть кода:

elseif ($description -eq $Null){ 
    $owned | % { 
     write-host ("Managing Group: " + $_.name + " Group Description: ") -nonewline 
     write-host "None Provided " -foreground red 
     } 
} 
else { 
    $owned | % {write-host ("Managing Group: " + $_.name + " Group Description: " + $_.description - replace "`r`n", " ")} 
} 
+0

Запись-хост «'n» не внесла никаких изменений, был показан в моем коде выше. Я также попытался изменить его, чтобы выглядеть как ваш, удалив мой «$ owned |%», но теперь ничего (группы) не печатает. – narue1992

+0

Я имел в виду, что '' $ owned |% "' должен быть удален только в первом, если не везде. –

+0

О, хорошо, я понимаю, что вы сейчас имеете в виду. Я удалил это, но я все еще вижу проблемы. Например, в одной строке я получаю: Управляющая группа: BU_CS_PSBA_COLLCORRGroup Описание: Управляющая группа: BU_CS_PAYISSUESGroup Описание: None Предоставлено Нет Предоставлено то, что делает этот отключенный, также является двойным «None Provided» в конце, где первая группа Отсутствует «None Provided», который говорит мне, что он пропустил и распечатал в конце ??? не имеет смысла – narue1992

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