在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-Object 不是必需的)。 - Duncan$hashErr.GetEnumerator() | Sort Name
单独就可以产生他的清单输出。实际上,使用Foreach-Object循环/格式化字符串甚至不会写入列标题。user_invalid,这些标题是从哪里来的?你是事先手动添加到日志中的吗? - Adi InbarPS M:\> $hashErr
- user_invalid