【问题标题】:Two different outputs from psObject [duplicate]psObject的两个不同输出[重复]
【发布时间】:2020-05-07 21:42:04
【问题描述】:

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

$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 生成两个不同的输出?

【问题讨论】:

  • 但是你已经有两个基于-match-notmatch的不同输出来自一个psObject:$results
  • @Jawad 我知道。但是当您运行脚本时,您只会得到一个组合输出。像这样:imgur.com/a/Vda0x9j

标签: powershell active-directory output domaincontroller psobject


【解决方案1】:

您的分组结果正确分开。

问题是您通过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 如果您想为输出指定不同的颜色,也可以使用。

【讨论】:

  • 谢谢,不知道,还在学习powershell。学到了新东西 :-) 标记为正确答案。
  • 请注意,您可以将Out-String | Write-Host 替换为Out-Host。主机和管道输出之间缺乏同步仅限于 PS v5+ 和一个非常具体的 - 尽管仍然很常见 - 场景:对于不具有 的类型的隐式 table 格式输出为他们定义的格式化数据 - 请参阅this answer
  • 现在才看到你的评论(你没有@-提到我)-感谢更新。是的,Out-Host 并不广为人知,但它可以方便地向主机发送格式丰富的对象表示。注意,除了格式化之外,Write-HostOut-Host 之间的另一个重要区别是在 PSv5+ 中只有Write-Host 写入信息流,而Out-Host 真正直接写入主机,这意味着它的输出不能捕获。
猜你喜欢
  • 2012-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多