Если вы остановите скрипт, вы увидите вывод ваших вызовов опции 3.
Следующие работы:
'3' {Get-ADPrincipalGroupMembership $target_user | select name | Out-Host }
или несколько удивительно
'3' {Get-ADPrincipalGroupMembership $target_user | select name | ft }
Проблема в том, что select-object записывает в stdout
и pause
пишет в консоль, что является двумя разными и конфликтующими выходами (если stdout
идет в консоль).Командлет GroupMembership производит вывод в stdout
, но Powershell буферизует stdout
, поскольку он обнаружил вывод на консоль через Show-Menu
.Вероятно, он сначала покажет пару КиБ вывода консоли в прямом режиме, прежде чем отобразит косвенный вывод на консоль посредством записи stdout
.Или он покажет буферизованный вывод stdout
, когда скрипт завершится, и убьет прямой вывод в консольный буфер, и сбросит записи stdout
.
Итак, решение здесь заключается в прямой записи в Host
сам.Конечно, это имеет недостаток, заключающийся в невозможности перенаправить вывод в потоке stdout
в другой сценарий.
Аналогичное обсуждение в SpiceWorks