Изменить powershell script для вывода без эллипсов (...)

Мне нужна помощь с выходом следующего script, поэтому вывод не отображается с помощью эллипсов (...). Я попытался вставить "| Format-Table -Wrap -AutoSize" Но я просто не понимаю.

 clear-host Add-PSSnapin microsoft.sharepoint.powershell -ErrorAction SilentlyContinue    
 $services = new-object system.collections.sortedlist
 $servers = (get-spfarm).servers  
 foreach ($server in $servers) {
     foreach($service in $server.serviceinstances)
     {
         if ($service.status = "Online")
         {
             $s = $service.typename
             if ($services.contains($s))
             {
                 $serverlist = $services[$s]
                 $servername = $server.name 
                 $services[$s]  = "$serverlist - $servername"
             }
             else
             {
                 $services[$s] = $server.name
             }
         }
     } } 
  $services

выход:

Name                            Value                                                                           
----                           -----                                                                           
Access Database Service        SE5APP - SE5FE - SE7FE - FAQ3                                          
Application Discovery **and L...** SE5APP - SE5FE - SE7FE - FAQ3                                          
Application Registry Service   SE5APP - SE5FE - SE7FE - FAQ3                                          

Спасибо за чтение.

Ответ 1

Здесь может помочь либо Format-List (fl), либо Format-Table -auto (ft -auto).

$services | fl

ИЛИ

$services | ft -auto

Ответ 2

Я столкнулся с этим сообщением и хотел бы добавить некоторую информацию, поскольку принятое решение не разрешило мою проблему, и я уверен, что другие могут найти следующую информацию полезной:

Быстрая история. Выполнение команд с помощью Microsoft Online Services Module с помощью Powershell, большая часть результатов постоянно извлекалась с усечением с отсечкой данных и отсутствовала как многоточие (...).

Исправление. Как объяснено в этой записи Greig, я неизбежно пришел к выводу $FormatEnumerationLimit=-1 является неоптимальным решением проблемы. Использование любого варианта Format-Wide, Format-List, Format-Table, Format-Custom, -AutoSize, Out-String -Width и т.д. Требует большого количества дополнительных соображений/кода. В случае, когда все, что вам нужно, - это видеть все возвращаемые данные, независимо от столбцов, массивов и т.д., $FormatEnumerationLimit=-1 гарантирует, что вы получите все, и вам не нужно возиться.

Дополнительная информация, как указано в сообщении Greig, включает:

PowerShell Quick Tip: создание широких таблиц с помощью PowerShell, где автор объясняет:

Если у вас есть определенное свойство, содержащее набор элементов, это свойство все еще может показывать многоточие в файле, создаваемом здесь, если количество элементов в этой коллекции превышает число, присвоенное встроенная переменная $FormatEnumerationLimit.

... и что "передача результатов в | Format-Table -Property * [будет] показывать все столбцы". Но содержимое из столбцов все равно может быть усечено ( "PowerShell обрезает вывод таблицы по умолчанию" ), и даже использование | Format-Table -Property * -AutoSize будет ограничено вашим экранным буфером ( "Таблицы с автоматическим размером ограничены шириной вашего экранного буфера" ). Решение, предлагаемое до абсолютного $FormatEnumerationLimit = -1, похоже, использует | Format-Table -Property * -AutoSize в сочетании с | Out-String -Width 4096 или любой необходимой ширины.

Использование команд Format to Change Output View содержит дополнительную документацию по Format cmdlets: Format-Wide, Format-List и Format-Table.