Может кто-нибудь объяснить Почему мои первые примеры не работают, и почему добавление в 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"
}
