2014-12-29 52 views
0

这是我上一个问题的延续。我遵循了一些关于如何为单词部分着色的建议,但是现在我已经将这种格式与“nonewline”相关联,现在管理组的列表都与其自己的列表一致。Nonewline混淆了Powershell的输出

换句话说,它打印出像这样:

管理组:....描写的特征:....管理组:....说明:....

我试着在各种职位上玩换行符,但我不想在每个管理组一个用户控件之间留下大的空白空间。我只是想为接下来的上市:

管理组:...描述:...

(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

会发生什么事,如果你删除包含'写 - 主机 “\'N”'行? –

+0

它们以同样的方式打印:管理Group..Description..Managing Group..Description在一行中。 – narue1992

+0

在我更改我的格式以使用“nonewline”获取前景色之前,他们正确地打印了 – narue1992

回答

1

根据我的理解,你所说的差距在两组管理组之间太重要了。 我认为问题来自使用

write-host "`n" 

写主机已经发出换行,

"`n" 

是第二换行,因此大的突破。

在if后面的第一个代码块中(我这样写为$ owned假定为$ null,因此将它管道化为一个foreach除了管道一次$ null之外没有多少作用):

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和其他跟随其它代码块。

更新

这可能有助于修复代码的第二部分:

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

我的意思是''拥有|%“'应该只在第一个,如果不是,无处不在。 –

+0

哦,好吧,我明白你的意思了。我删除了,但我仍然看到问题。例如,我得到一行:管理组:BU_CS_PSBA_COLLCORRGroup描述:管理组:BU_CS_PAYISSUESGroup描述:无提供 没有提供 什么让这个如此关闭也是由第二组的“无提供”缺少它是“没有提供”,它告诉我,它跳过并打印在最后?没有意义 – narue1992