Список пользователей AD в поле списка в Powershell - PullRequest
0 голосов
/ 07 августа 2020

В настоящее время я создаю свой собственный инструмент администрирования, и одной из функций должно стать «Отключить учетную запись» (пользователь Active Directory).

В настоящее время у меня есть следующий код:

#Assemblies
Add-Type -AssemblyName System.Windows.Forms
[System.Windows.Forms.Application]::EnableVisualStyles()

#Frame
$frmDisableUser                  = New-Object system.Windows.Forms.Form
$frmDisableUser.ClientSize       = New-Object System.Drawing.Point(378,99)
$frmDisableUser.text             = "Disable User"
$frmDisableUser.TopMost          = $false
$frmDisableUser.BackColor        = [System.Drawing.ColorTranslator]::FromHtml("#ffffff")
$frmDisableUser.TopMost            = $false
$frmDisableUser.FormBorderStyle    = "FixedSingle"
$frmDisableUser.startposition      = "CenterScreen"
$frmDisableUser.MaximizeBox        = $false

#AD Users Listbox
$lstADUsers                      = New-Object system.Windows.Forms.ListBox
$lstADUsers.width                = 356
$lstADUsers.height               = 20
$lstADUsers.location             = New-Object System.Drawing.Point(9,18)
$lstADUsers.Font                 = New-Object System.Drawing.Font('Microsoft Sans Serif',10)

#Disable Account Button
$btnDisableAccount               = New-Object system.Windows.Forms.Button
$btnDisableAccount.text          = "Disable"
$btnDisableAccount.width         = 100
$btnDisableAccount.height        = 30
$btnDisableAccount.location      = New-Object System.Drawing.Point(265,53)
$btnDisableAccount.Font          = New-Object System.Drawing.Font('Microsoft Sans Serif',10)
$btnDisableAccount.Add_Click({

})

#Adds all elements into th eframe
$frmDisableUser.controls.AddRange(@($lstADUsers,$btnDisableAccount))

#Shows the frame
$frmDisableUser.ShowDialog()

Команда, которую я использую для получения всех пользователей AD в качестве вывода, следующая:

Get-ADUser -Filter {(Enabled -eq "true")} | Select-Object Name

Я думаю, что самый простой способ - использовать массивы, но я не очень знаком с массивами. честно ... Я был бы очень рад, если бы вы мне помогли!

Спасибо за ваше время!

Ответы [ 2 ]

1 голос
/ 07 августа 2020

Вы можете добавлять элементы в список с помощью

$ lstADUsers.Items.Add ()

Я обновил ваш код, чтобы продемонстрировать это.

#Assemblies
Add-Type -AssemblyName System.Windows.Forms
[System.Windows.Forms.Application]::EnableVisualStyles()

#Frame
$frmDisableUser                  = New-Object system.Windows.Forms.Form
$frmDisableUser.ClientSize       = New-Object System.Drawing.Point(388,299)
$frmDisableUser.text             = "Disable User"
$frmDisableUser.TopMost          = $false
$frmDisableUser.BackColor        = [System.Drawing.ColorTranslator]::FromHtml("#ffffff")
$frmDisableUser.TopMost            = $false
$frmDisableUser.FormBorderStyle    = "FixedSingle"
$frmDisableUser.startposition      = "CenterScreen"
$frmDisableUser.MaximizeBox        = $false

#AD Users Listbox
$lstADUsers                      = New-Object system.Windows.Forms.ListBox
$lstADUsers.width                = 356
$lstADUsers.height               = 220
$lstADUsers.location             = New-Object System.Drawing.Point(9,18)
$lstADUsers.Font                 = New-Object System.Drawing.Font('Microsoft Sans Serif',10)
$lstADUsers.AutoSize = $false
Get-ADUser -Filter {(Enabled -eq "true")} | foreach{[void]$lstADUsers.Items.Add($_.name)}


#Disable Account Button
$btnDisableAccount               = New-Object system.Windows.Forms.Button
$btnDisableAccount.text          = "Disable"
$btnDisableAccount.width         = 100
$btnDisableAccount.height        = 30
$btnDisableAccount.location      = New-Object System.Drawing.Point(265,249)
$btnDisableAccount.Font          = New-Object System.Drawing.Font('Microsoft Sans Serif',10)
$btnDisableAccount.Add_Click({

})

#Adds all elements into th eframe
$frmDisableUser.controls.AddRange(@($lstADUsers,$btnDisableAccount))

#Shows the frame
$frmDisableUser.ShowDialog()

Обратите внимание на приведение к [void] - это подавление вывода из метода .Add (). Он выдает номер индекса для этого элемента в массиве.

Я также предлагаю вам проверить https://poshgui.com/, если вы еще этого не сделали. Он может помочь вам не только разрабатывать формы, но и научиться взаимодействовать с компонентами GUI.

0 голосов
/ 07 августа 2020

Свойство Items ListBox (которое является объектом ObjectCollection) имеет метод под названием AddRange, с помощью которого вы можете вводить массив. Просто получите строковый массив имен пользователей и введите его в один go. Чтобы сделать список более читабельным, отсортируйте его по алфавиту. Вы также можете установить для свойства «Сортировано» списка значение $ true, но сортировка перед добавлением в список более эффективна.

$users = (Get-ADUser -Filter "Enabled -eq 'True'").Name | Sort-Object

Затем добавьте массив в список

$lstADUsers.Items.AddRange($users)

PS Если вам нужно обновить sh данные списка с результатом нового вызова Get-ADUser, сначала очистите элементы списка с помощью $lstADUsers.Items.Clear()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...