Powershell键=值输出

时间:2012-01-23 10:39:28

标签: powershell

我在发帖之前搜索了这个答案,所以我提前道歉,如果它在这里,我找不到它!

我正在使用Powershell从我的Exchange服务器中提取一堆数据,并将其放入哈希表中。

我没有问题格式化此哈希表以满足我自己的报告需求,但现在我想将这些数据放入Splunk(我知道Splunk Exchange App,这是针对不同的需求)。

所以Splunk可以在没有任何预处理工作的情况下提取数据,我需要它看起来如下所示。

timestamp key=value,key=value,key=value,key=value
timestamp key=value,key=value,key=value,key=value
timestamp key=value,key=value,key=value,key=value
timestamp key=value,key=value,key=value,key=value
timestamp key=value,key=value,key=value,key=value

2 个答案:

答案 0 :(得分:3)

试试这个:

$ht = @{one=1; two=2; three=3}
$KeysAndValues = $ht.GetEnumerator() | Foreach-Object { '{0}={1}' -f $_.Key,$_.Value }
'{0:MM/dd/yyyy} {1}' -f (Get-Date),($KeysAndValues -join ',')

答案 1 :(得分:0)

让我们使用StringBuilder构建输出字符串。

$sb=new-object Text.StringBuilder
# Append timestamp, here from system time
[void]$sb.Append("{0} " -f [datetime]::now.tostring("u"))
# Populate sample hashtable with some data
$ht = @{"foo"="oof"; "bar"="rab"; "baz"="zab"; "qux"="xug" }
# Enumerate the hashtable by sorted names just for fun
$ht.GetEnumerator() | sort name | % { 
# Append keys and values to the stringbuilder
  [void]$sb.Append($("{0}={1}," -f $_.Name, $_.Value))
}
# Get rid of the tailing comma
[void]$sb.Remove($sb.Length-1, 1)
# Print output
$sb.ToString()