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
时,不会发生美化。
我有代码可以将排序的哈希表输出到屏幕:
$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
时,不会发生美化。