【问题标题】:PowerShell output contents of hash to filePowerShell将哈希的内容输出到文件
【发布时间】:2015-01-09 19:59:22
【问题描述】:

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

$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”。

我该如何解决?

【问题讨论】:

  • 你想如何格式化输出?
  • 请退后一步,描述您要解决的实际问题,而不是您认为的解决方案。你的哈希表的内容是什么样的?数据从何而来?输出应该是什么样子?
  • @AnsgarWiechers 好的,我编辑了

标签: powershell hashtable


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    对于每个条目,您都会看到System.Collections.DictionaryEntry,因为它没有适当的字符串等价物。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-06-27
      • 1970-01-01
      • 2021-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多