Ключ Powershell = вывод значения - PullRequest
0 голосов
/ 23 января 2012

Я искал ответ на этот вопрос перед публикацией, поэтому заранее прошу прощения, если он здесь, и я не могу его найти!

Я использую Powershell для извлечения кучи данных с моего сервера Exchange, и она помещается в хеш-таблицу.

У меня нет проблем с форматированием этой хеш-таблицы в соответствии с моими собственными требованиями к отчетности, но теперь я хочу поместить эти данные в Splunk (я знаю о приложении Splunk Exchange, это для разных нужд).

Чтобы 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 ]

3 голосов
/ 23 января 2012

Попробуйте это:

$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 ',')
0 голосов
/ 23 января 2012

Давайте построим выводную строку с помощью 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...