1. У вас нет формы / триггера событий в вашем коде.
Форма - это просто контейнер для хранения элементов, пока вы не добавите код, чтобы заставить его что-то делать. Вы должны иметь правильный объект GUI, чтобы отправить этот результат.
Я не уверен, делаете ли вы все это вручную в ISE, или в VSCode, или в Блокноте, или что-то еще, но это хорошая первая попытка. Однако то, что вы показываете, по-видимому, указывает на то, что вы не совсем разбираетесь в разработке GUI / общей разработке приложений, так как то, что вы делаете, на самом деле не уникально для PowerShell, а то, что требуется для любого клиента или приложения для разработки приложений.
Так что, действительно, потратьте некоторое время на изучение / обзор общей разработки WPF / Winforms, и этот материал будет рассмотрен.
Что касается вашего варианта использования, вам нужно:
- Определите объект графического интерфейса списка (многострочный, ListBox, ListView, datagrid) для хранения результатов (синхронизация полей со списком означает добавление и удаление элементов в действиях по событию)
- Определите, что это за список (текстовые файлы, чтение БД и т. Д.)
- При нажатии, изменении или другом событии формы прочитайте этот список и заполните объект списка GUI.
Есть много примеров этого на этом сайте и во всем Интернете.
Вот хорошее видео по разработке GUI с PowerShell:
поле со списком PowerShell заполнить на основе выбранного элемента в другом поле со списком
Из приведенного выше обсуждения (не то, что можно просто добавить в свой код, не понимая, что и почему):
Use a ComboBox.SelectionChangeCommitted Event: "Occurs when the user changes the selected item and that change is displayed in the ComboBox" $combobox2_SelectionChangeCommitted={ $Mailboxes = Get-Mailbox -OrganizationalUnit $ClientSelected foreach ($mailbox in $Mailboxes) { $CurrentMailbox = " ()" -f $mailbox.Name, $mailbox.Alias Load-ComboBox $combobox2 $CurrentMailbox -Append } } Use a button: $button1_Click={ $Mailboxes = Get-Mailbox -OrganizationalUnit $ClientSelected foreach ($mailbox in $Mailboxes) { $CurrentMailbox = " ()" -f $mailbox.Name, $mailbox.Alias Load-ComboBox $combobox2 $CurrentMailbox -Append } }
Наконец, используя это ...
Write-Host "ComboBox = " $liste1.DisplayMember Write-Host "ComboBox = " $liste2.selectedvalue
… Это не то, что нужно делать, потому что консоль не открывается, чтобы увидеть эти результаты, и следует избегать Write-Host, за исключением того, что при использовании только консольной раскраски текста в других сценариях форматирования только консоли, она также очищает буфер отображения, поэтому она не может быть отправленным на что-либо еще. Кроме того, у вас нет ни одного объекта GUI с именем ComboBox в форме, поэтому он не служит какой-либо цели для вашего варианта использования.