【发布时间】:2021-12-05 04:30:17
【问题描述】:
我有一个类似这样的 .txt 文件:
First, Second, Third, Fourth, -32
First-a, Second-a, Third-a, Fourth-a, 98
First-b, Second-b, Third-b, Fourth-b, 32
First-c, Second-c, Third-c, Fourth-c, 1
First-d, Second-d, Third-d, Fourth-d, -20
我有以下排序代码:
$Line = $_.Trim() -Split ','
New-Object -TypeName PSCustomObject -Property @{
fst = $Line[0]
snd = $Line[1]
thrd = $Line[2]
frth = $Line[3]
fifth = [int]$Line[4]
}
} | Sort-Object -Descending fifth | Write-Host
所以这必须显示:
First-a, Second-a, Third-a, Fourth-a
因为 98 是最大的数字
【问题讨论】:
-
顺便说一句:
Write-Hostis typically the wrong tool to use,除非意图是仅写入显示器,绕过成功输出流,并且能够将输出发送到其他命令,将其捕获在变量中,将其重定向到文件。要输出一个值,请单独使用它;例如,$value而不是Write-Host $value(或使用Write-Output $value,尽管很少需要)。另见:stackoverflow.com/a/50416448/45375的底部 -
@mklement0,我认为
Write-Host在 5.0 中成为Write-Information的包装器时有所赎回。 stackoverflow.com/a/38593312/447901 -
@lit,
Write-Host总是有其合法用途(由于您提到的 v5 更改,您甚至可以通过信息流捕获它),但我的评论旨在强调常见的反当真正的意图是将数据输出到成功流时使用Write-Host的模式。 -
@mklement0,我同意通常首选将数据保存在管道中以获得更好的自动化/集成功能。由于没有其他信息,我不认为这是该 OP 的问题。
-
@lit,我认为这是一个问题的原因是管道末端的
| Write-Host。鉴于Write-Host通常会产生从不太友好到完全无用的表示,因此它的使用毫无意义。 (如果意图是绕过成功流进行临时调试,您可以使用| Out-Host,这将为您提供友好的表示)。
标签: powershell