来自 psObject 的两个不同输出



我有以下代码,它将编写任何属于该组或不属于该组的用户:

$Host.UI.RawUI.WindowTitle = "User Group Finder"
$groupname = Read-Host -Prompt 'Enter group name: '
Write-Host ""
Write-Host "People who are not in this group:" -ForegroundColor Red
$results = @()
$users = Get-ADUser  -Properties memberof -Filter * 
foreach ($user in $users) {
$groups = $user.memberof -join ';'
$results += New-Object psObject -Property @{'User'=$user.name;'Groups'= $groups}
}
$results | Where-Object { $_.groups -notmatch $groupname } | Select-Object user
Write-Host "People who are in this group:" -ForegroundColor Green
$results | Where-Object { $_.groups -match $groupname } | Select-Object user

当我只想有一个输出时,代码正在工作。

但是我想有两个不同的输出(在组中的人和不在组中的人(。

问题是现在它的组合输出。

有什么方法可以从一个 psObject 生成两个不同的输出?

您的小组结果已正确分隔。

问题是您同时通过Write-Host和管道使用控制台(两个结果的输出(。

两者都显示在控制台上,但通过管道的内容与Write-Host不同步

这就是为什么事情看起来不正常的原因。

通过将结果管道传输到Out-Host将输出发送到主机进行修复,以便在与 Write-Host 语句混合时保持顺序。

$results | Where-Object { $_.groups -notmatch $groupname } | Select-Object user | Out-Host
Write-Host "People who are in this group:" -ForegroundColor Green
$results | Where-Object { $_.groups -match $groupname } | Select-Object user | Out-Host

如果要为输出指定不同的颜色,也可以使用| Out-String | Write-Host

最新更新