【问题标题】:How to display formatted output with Write-Host [duplicate]如何使用 Write-Host 显示格式化输出 [重复]
【发布时间】:2016-04-12 22:51:27
【问题描述】:

当对象以Write-HostWrite-Output 显示与直接调用对象时,我对 PowerShell 如何处理对象的格式有点困惑。

我需要使用 Write-Host,因为当我在函数中调用 Write-Output 时,它会破坏我的代码。

但是当我使用 Write-Host 时,显示的数据不是我所期望的。我想在我直接调用它时看到我的对象(Write-Host 也一样)。

PS> $files = GetChildItem C:\
PS> $files # Or Write-Output $files
PS> Write-Host $files
PS> Write-Host $files |Format-Table
PS> $files | Format-Table | Write-Host

【问题讨论】:

  • Write-Host 不用于显示复杂对象。这就是 Write-Output 应该做的。
  • 只是一个更正 Matt,Write-Output 用于将对象放在管道上以供下一个函数/cmdlet 使用。只有当到达管道的末端时,才会将任何内容返回给调用者......当从 PS 提示符调用时,主机使用返回的每个对象的 .ToString() 方法在控制台中显示,除非特别定义,否则默认为对象类型。

标签: powershell


【解决方案1】:

Out-String 会将表格格式转换为字符串。正如Nick Daniels所指出的那样

 $files | Format-Table | Out-String|% {Write-Host $_}

【讨论】:

  • $files | Format-Table | Out-String | Write-Host 也可以。只需保存几个字符。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-25
  • 1970-01-01
相关资源
最近更新 更多