无线会扰乱Powershell的输出

时间:2014-12-29 14:50:16

标签: powershell newline space

这是我之前的问题的延续。我遵循了一些关于如何为部分单词着色的建议,但是现在我使用“非线”这种格式,管理组的列表现在都与他们自己的一行排在一起。

换句话说,它打印如下:

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

我尝试过在不同位置使用换行符,但我不希望每个管理组之间有一个大的空白区域用户控件。我只想要列出如下:

管理组:...说明:...

(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"
}

1 个答案:

答案 0 :(得分:1)

据我所知,您说两组管理组之间的差距太大了。 我认为问题来自于使用

write-host "`n"

Write-host已经发出换行符,

"`n" 

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

在if之后的第一个代码块中(我将这样写为$ own,假设为$ null,因此将它连接到foreach除了将$ null一次性管道化之外不会做太多事情):< / p>

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和else之后的其他代码块。

<强>更新

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

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", "  ")}
}