Хеш-таблица Powershell не записывает в файл должным образом - получает только строки «System.Collections»

Кто-нибудь, пожалуйста, объясните Почему мои первые примеры не работают, и почему добавление ForEach-Object решает проблему? Заранее благодарим!


Я преобразовал результат команды в хеш-таблицу (образец в конце сообщения) и хочу записать информацию в файл как часть моей обработки. Я знаю, что $ ht.GetEnumerator () | Sort-Object Name вернет на экран полный хэш, отсортированный. Однако, как только я пытаюсь отправить данные в файл, происходит сбой.

$ht | Add-Content log.txt

регистрирует только одну строку System.Collections.Hashtable . Итак, я также пробовал

$ht.GetEnumerator() | Sort-Object Name | Add-Content log.txt 

и в итоге получил строки

System.Collections.DictionaryEntry
System.Collections.DictionaryEntry
System.Collections.DictionaryEntry

. Затем я попытался перебрать и обработать каждую отдельно с помощью

foreach ($key in $ht.keys) {
Add-Content log.txt "$key : $ht.$key" }

и получил

Server address : System.Collections.Hashtable.Server address
Client address : System.Collections.Hashtable.Client address
User name : System.Collections.Hashtable.User name

Решено с помощью :

$ht.GetEnumerator() | Sort-Object Name |
ForEach-Object {"{0} : {1}" -f $_.Name,$_.Value} |
Add-Content log.txt 

Для справки, образец хеш-таблицы:

$ht = @{
    "Server address" = "server.net";
    "Client address" = "10.20.121.153";
    "User name" = "myuser"
}
12
задан rand0m1 10 May 2011 в 18:14
поделиться