PowerShell将hash的内容输出到文件

时间:2015-01-09 19:59:23

标签: powershell hashtable

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

$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

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

我该如何解决?

2 个答案:

答案 0 :(得分:1)

如果你想要它以相同的格式显示在屏幕上(折叠在管道上以便于阅读):

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

答案 1 :(得分:1)

如果你做了类似的事情,你会在屏幕上得到类似的输出:

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

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

然后你应该做mjolinor建议的事情。 PowerShell会自动将| Out-Default命令附加到控制台,以便以一种视觉上令人愉悦的方式显示。当您将输出发送到Add-Content时,无法进行美化。