Проблема в вашем коде заключается в использовании `$NameList.Count` в цикле `foreach`. `foreach` использует коллекцию, а не число, поэтому он не работает так, как вы ожидаете. Вместо этого вам нужно использовать цикл `for`, чтобы итеративно добавлять элементы в `listBox`.
Ниже приведён пример, который показывает, как создать динамический список объектов Active Directory и правильно отобразить их в выпадающем списке:
```powershell
# Подключение к Active Directory и получение списка пользователей
Import-Module ActiveDirectory
$NameList = Get-ADUser -Filter * -Property DisplayName | Select-Object -ExpandProperty DisplayName
# Создание формы
Add-Type -AssemblyName System.Windows.Forms
$form = New-Object System.Windows.Forms.Form
$form.Text = "Выбор пользователя"
$form.Width = 300
$form.Height = 400
# Создание элемента управления ListBox
$listBox = New-Object System.Windows.Forms.ListBox
$listBox.Width = 250
$listBox.Height = 300
$listBox.Location = New-Object System.Drawing.Point(20, 20)
# Добавление элементов из $NameList в ListBox
foreach ($name in $NameList) {
$listBox.Items.Add($name) | Out-Null
}
# Добавление ListBox на форму
$form.Controls.Add($listBox)
# Показать форму
$form.Add_Shown({$form.Activate()})
[void] $form.ShowDialog()
```
### Объяснение кода:
1. **Импортирование модуля Active Directory**: Он необходим для работы с объектами AD.
2. **Получение списка пользователей**: Используется команда `Get-ADUser` для получения всех пользователей и извлечения их отображаемых имен в массив `$NameList`.
3. **Создание формы**: Создается основное окно с заголовком и размерами.
4. **Создание ListBox**: Создается элемент управления ListBox, задаются размеры и положение на форме.
5. **Добавление элементов**: Вместо использования цикла `for`, используется `foreach`, который перебирает элементы массива `$NameList` и добавляет их в `listBox`.
6. **Отображение формы**: Открывается диалоговое окно формы.
С помощью этого примера вы сможете отобразить все отображаемые имена пользователей из Active Directory в выпадающем списке. Убедитесь, что у вас есть необходимые разрешения для доступа к AD и правильно настроено окружение для работы с PowerShell и WinForms.