是否可以格式化Powershell中的哈希表输出以将所有值输出到一行上?在Powershell中将哈希表的输出格式化为输出到一行
例如
我有哈希表$ hashErr与以下值:
$hashErr = @{"server1" = "192.168.17.21";
"server2" = "192.168.17.22";
"server3" = "192.168.17.23"}
哪些是写入日志与下面:
$hashErr.GetEnumerator() | Sort-Object Name | ForEach-Object {ForEach-Object {"{0}`t{1}" -f $_.Name,($_.Value -join ", ")} | Add-Content $log
的将导致以下被写入到日志:
Name Value
---- -----
server2 192.168.17.22
server1 192.168.17.21
server3 192.168.17.23
我的问题是,怎么可以我格式化这个哈希表,所以输出全部写入一行,如下所示?
server2 192.168.17.22 | server1 192.168.17.21 | server3 192.168.17.23
这可以通过循环哈希表中的所有值并将它们放入数组中,但肯定存在更直接的方法?
你似乎要么有一个额外的'ForEach-Object {'或缺少'}'(要么改变代码的工作方式,但不需要外部的ForEach对象)。 – Duncan
@Duncan对于这个问题,我根本没有看到需要** Foreach-Object **循环。 '$ hashErr.GetEnumerator()|排序名称“本身在他的列表中产生输出。事实上,使用** Foreach-Object **循环/格式化的字符串来完成它甚至不会写列标题。 user_invalid,这些标题来自哪里?您是否事先手动将它们添加到日志中? –
标题不是手动添加的,它们似乎是哈希表的标准输出,按照项目的添加顺序,例如, 'PS M:\> $ hashErr' –