PowerShell 将散列的内容输出到文件

PowerShell output contents of hash to file

我有代码可以将排序的哈希表输出到屏幕:

$h.getenumerator() | sort value -descending

看起来像这样:

Name                           Value
----                           -----
10.10.10.10 69566308           151
10.10.10.11 69566308           143
10.10.10.12 69566308           112
10.10.10.13 69566308            99
10.10.10.14 69566308            71
10.10.10.15 69566308            70

但我想将其输出到文件中。

当我尝试使用

输出到文件时
$h.getenumerator() | sort value -descending | out-string | Add-Content D:\Script\iis_stats.log

$h.getenumerator() | sort value -descending | Add-Content D:\Script\iis_stats.log

我得到的只是 D:\Script\iis_stats.log 中的 "System.Collections.DictionaryEntry"。

我该如何解决?

如果您希望它的格式与它在屏幕上显示的格式相同(为了便于阅读,在管道处折叠):

$h.getenumerator() | 
  Sort-Object value -descending | 
  Format-Table | 
  Out-String | 
  Add-Content D:\Script\iis_stats.log

如果您也这样做,您会在屏幕上得到类似的输出:

$h.GetEnumerator() | sort value -Descending | ForEach-Object{
    $_.GetType().FullName
}

对于每个条目,您都会看到 System.Collections.DictionaryEntry,因为它没有正确的等效字符串。

那你就按照mjolinor的建议去做吧。 PowerShell 自动将 | Out-Default 命令附加到控制台,以便它以视觉上令人愉悦的方式显示。当您将输出发送到 Add-Content 时,不会发生美化。