Im trying to create a GUI that will query AD for users, the display names of the users will go into the listbox. This i have completed. I can't figure out how to select a display name in said listbox, and once selected to display that users other AD info into other textboxes i've created. Also, another thing i can't seem to figure out is how to make the search text box activate the search button when Enter is pressed.
Below is what i have so far:
Import-Module ActiveDirectory -Cmdlet Get-aduser
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.DirectoryServices")
$ErrorActionPreference = "silentlycontinue"
function OnApplicationLoad {
#Note: This function is not called in Projects
#Note: This function runs before the form is created
#Note: To get the script directory in the Packager use: Split-Path $hostinvocation.MyCommand.path
#Note: To get the console output in the Packager (Windows Mode) use: $ConsoleOutput (Type: System.Collections.ArrayList)
return $true #return true for success or false for failure
}
function OnApplicationExit {
#Note: This function is not called in Projects
#Note: This function runs after the form is closed
$script:ExitCode = 0 #Set the exit code for the Packager
}
####################Starts code############################
function Call-test_pff {
$form1 = New-Object 'System.Windows.Forms.Form'
$buttonNext = New-Object 'System.Windows.Forms.Button'
$buttonPrev = New-Object 'System.Windows.Forms.Button'
$buttonExit = New-Object 'System.Windows.Forms.Button'
$tabcontrol1 = New-Object 'System.Windows.Forms.TabControl'
$tabpage1 = New-Object 'System.Windows.Forms.TabPage'
$InitialFormWindowState = New-Object 'System.Windows.Forms.FormWindowState'
$Form1.MaximizeBox = $False
$Form1.StartPosition = "CenterScreen"
$form1.add_Load($form1_Load)
$Form1.FormBorderStyle = 'FixedDialog'
# form1
#
$form1.Controls.Add($tabcontrol1)
$form1.ClientSize = '450, 640'
$form1.Name = "form1"
$form1.Text = "Shearch AD"
$form1.add_Load($form1_Load)
#
# tabcontrol1
#
$tabcontrol1.Controls.Add($tabpage1)
$tabcontrol1.Anchor = 'Top, Bottom, Left, Right'
$tabcontrol1.Location = '5, 12'
$tabcontrol1.Name = "tabcontrol1"
$tabcontrol1.SelectedIndex = 0
$tabcontrol1.Size = '440, 620'
$tabcontrol1.TabIndex = 0
#
# tabpage1
#
$tabpage1.Location = '4, 22'
$tabpage1.Name = "tabpage1"
$tabpage1.Padding = '3, 3, 3, 3'
$tabpage1.Size = '340, 241'
$tabpage1.TabIndex = 0
$tabpage1.Text = "User Info"
$tabpage1.UseVisualStyleBackColor = $True
#
#Add Icon to window
$Icon = [system.drawing.icon]::ExtractAssociatedIcon($PSHOME + "\powershell.exe")
$form1.icon = $Icon
####################User Info#########################
$groupBox = New-Object System.Windows.Forms.GroupBox
$groupBox.Location = New-Object System.Drawing.Size(10,10)
$groupBox.size = New-Object System.Drawing.Size(80,80)
$groupBox.text = "Search By..."
$Tabpage1.Controls.Add($groupBox)
$RadioButton1 = New-Object System.Windows.Forms.RadioButton
$RadioButton1.Location = new-object System.Drawing.Point(5,15)
$RadioButton1.size = New-Object System.Drawing.Size(80,20)
$RadioButton1.Checked = $true
$RadioButton1.Text = "Last Name"
$groupBox.Controls.Add($RadioButton1)
$RadioButton2 = New-Object System.Windows.Forms.RadioButton
$RadioButton2.Location = new-object System.Drawing.Point(5,35)
$RadioButton2.size = New-Object System.Drawing.Size(80,20)
$RadioButton2.Text = "Network ID"
$groupBox.Controls.Add($RadioButton2)
#form1: "Search Parameter"
$label1 = New-Object system.windows.forms.label
$label1.location = "5, 90"
$label1.size = "100, 20"
$label1.BackColor = "transparent"
$label1.text = "Search Parameter:"
$Tabpage1.controls.add($label1)
#form1: password box "Search Box"
$textbox1 = New-Object system.windows.forms.textbox
$textbox1.location = "5, 110"
$textbox1.size = "100, 25"
$textbox1.backcolor = "white"
$textbox1.multiline = $false
$Tabpage1.controls.add($textbox1)
#form1: "Search"
$button1 = New-Object system.windows.forms.button
$button1.location = "5, 140"
$button1.size = "100, 25"
$button1.text = "Search"
$button1.Add_Click({
If ($radiobutton1.checked -eq $True){
$grid = $objListBox
$lnquery = $textbox1.Text.ToString()+"*"
search_contact_ad($lnquery)
function search_contact_ad([string]$lastname_str){
if ($lastname_str) {
$array_ad = New-Object System.Collections.arrayList
$Script:procInfo = @(Get-ADUser -Filter {sn -like $lastname_str} -Properties displayname -SearchBase "dc=domain,dc=local" |sort-object -property displayname |select -expand displayname)
$array_ad.AddRange($procInfo)
$grid.DataSource = $array_ad
$form.refresh()
}}
}
Elseif($radiobutton2.checked -eq $True){
$grid = $objListBox
$lnquery = $textbox1.Text.ToString()+"*"
search_contact_ad($lnquery)
function search_contact_ad([string]$lastname_str){
if ($lastname_str) {
$array_ad = New-Object System.Collections.ArrayList
$Script:procInfo = @(Get-ADUser -Filter {sAMAccountName -like $lastname_str} -Properties displayname -SearchBase "dc=domain,dc=local" |sort-object -property displayname |Select-Object -expand displayname)
$array_ad.AddRange($procInfo)
$grid.DataSource = $array_ad
}}
}
})
$Tabpage1.controls.add($button1)
$objListBox = New-Object System.Windows.Forms.ListBox
$objListBox.Name = "grouplist"
$objListBox.Multiline = $True
$objListBox.DataMember = ""
$objListBox.TabIndex = 1
$objListBox.Location = New-Object Drawing.Point 115,10
$objListBox.Size = New-Object Drawing.Point 310,155
$objListBox.Add_SelectedValueChanged({
})
$Tabpage1.controls.add($objListBox)
$groupBoxNetworkinfo = New-Object System.Windows.Forms.GroupBox
$groupBoxNetworkinfo.Location = New-Object System.Drawing.Size(5,170)
$groupBoxNetworkinfo.size = New-Object System.Drawing.Size(205,420)
$groupBoxNetworkinfo.text = "Network Info"
$Tabpage1.Controls.Add($groupBoxNetworkinfo)
#form1: "NetworkDisplayName"
$labelNetworkDisplayName = New-Object system.windows.forms.label
$labelNetworkDisplayName.location = "5, 15"
$labelNetworkDisplayName.size = "100, 15"
$labelNetworkDisplayName.BackColor = "transparent"
$labelNetworkDisplayName.text = "Display Name:"
$groupBoxNetworkinfo.controls.add($labelNetworkDisplayName)
#form1: NetworkDisplaybox
$NetworkDisplaybox = New-Object system.windows.forms.textbox
$NetworkDisplaybox.location = "5, 30"
$NetworkDisplaybox.size = "180, 25"
$NetworkDisplaybox.backcolor = "white"
$NetworkDisplaybox.multiline = $true
$NetworkDisplaybox.readonly = $true
$NetworkDisplaybox.text = $NetworkDisplayname
$groupBoxNetworkinfo.controls.add($NetworkDisplaybox)
#form1: "labelNetworkEmail"
$labelNetworkEmail = New-Object system.windows.forms.label
$labelNetworkEmail.location = "5, 60"
$labelNetworkEmail.size = "100, 15"
$labelNetworkEmail.BackColor = "transparent"
$labelNetworkEmail.text = "Network Email:"
$groupBoxNetworkinfo.controls.add($labelNetworkEmail)
#form1: NetworkEmailbox
$NetworkEmailbox = New-Object system.windows.forms.textbox
$NetworkEmailbox.location = "5, 75"
$NetworkEmailbox.size = "180, 25"
$NetworkEmailbox.backcolor = "white"
$NetworkEmailbox.multiline = $true
$NetworkEmailbox.readonly = $true
$NetworkEmailbox.text = $NetworkEmail
$groupBoxNetworkinfo.controls.add($NetworkEmailbox)
#form1: "labelNetworkHomeDir"
$labelNetworkHomeDir = New-Object system.windows.forms.label
$labelNetworkHomeDir.location = "5, 105"
$labelNetworkHomeDir.size = "150, 15"
$labelNetworkHomeDir.BackColor = "transparent"
$labelNetworkHomeDir.text = "Network Home Directory:"
$groupBoxNetworkinfo.controls.add($labelNetworkHomeDir)
#form1: NetworkHomeDirBox
$NetworkHomeDirBox = New-Object system.windows.forms.textbox
$NetworkHomeDirBox.location = "5, 120"
$NetworkHomeDirBox.size = "180, 25"
$NetworkHomeDirBox.backcolor = "white"
$NetworkHomeDirBox.multiline = $true
$NetworkHomeDirBox.readonly = $true
$NetworkHomeDirBox.text = $NetworkHomeDir
$groupBoxNetworkinfo.controls.add($NetworkHomeDirBox)
#form1: "labelNetworkPhone"
$labelNetworkPhone = New-Object system.windows.forms.label
$labelNetworkPhone.location = "5, 150"
$labelNetworkPhone.size = "150, 15"
$labelNetworkPhone.BackColor = "transparent"
$labelNetworkPhone.text = "Network Phone Number:"
$groupBoxNetworkinfo.controls.add($labelNetworkPhone)
#form1: NetworkPhoneBox
$NetworkPhoneBox = New-Object system.windows.forms.textbox
$NetworkPhoneBox.location = "5, 165"
$NetworkPhoneBox.size = "180, 25"
$NetworkPhoneBox.backcolor = "white"
$NetworkPhoneBox.multiline = $true
$NetworkPhoneBox.readonly = $true
$NetworkPhoneBox.text = $NetworkPhone
$groupBoxNetworkinfo.controls.add($NetworkPhoneBox)
#form1: "labelNetworkTitle"
$labelNetworkTitle = New-Object system.windows.forms.label
$labelNetworkTitle.location = "5, 195"
$labelNetworkTitle.size = "150, 15"
$labelNetworkTitle.BackColor = "transparent"
$labelNetworkTitle.text = "Network Title:"
$groupBoxNetworkinfo.controls.add($labelNetworkTitle)
#form1: NetworkTitleBox
$NetworkTitleBox = New-Object system.windows.forms.textbox
$NetworkTitleBox.location = "5, 210"
$NetworkTitleBox.size = "180, 25"
$NetworkTitleBox.backcolor = "white"
$NetworkTitleBox.multiline = $true
$NetworkTitleBox.readonly = $true
$NetworkTitleBox.text = $NetworkTitle
$groupBoxNetworkinfo.controls.add($NetworkTitleBox)
#form1: "labelNetworkUserName"
$labelNetworkUserName = New-Object system.windows.forms.label
$labelNetworkUserName.location = "5, 240"
$labelNetworkUserName.size = "150, 15"
$labelNetworkUserName.BackColor = "transparent"
$labelNetworkUserName.text = "Network Username:"
$groupBoxNetworkinfo.controls.add($labelNetworkUserName)
#form1: NetworkUserNameBox
$NetworkUserNameBox = New-Object system.windows.forms.textbox
$NetworkUserNameBox.location = "5, 255"
$NetworkUserNameBox.size = "180, 25"
$NetworkUserNameBox.backcolor = "white"
$NetworkUserNameBox.multiline = $true
$NetworkUserNameBox.readonly = $true
$NetworkUserNameBox.text = $NetworkUsername
$groupBoxNetworkinfo.controls.add($NetworkUserNameBox)
#form1: "labelNetworkDepartment"
$labelNetworkDepartment = New-Object system.windows.forms.label
$labelNetworkDepartment.location = "5, 285"
$labelNetworkDepartment.size = "150, 15"
$labelNetworkDepartment.BackColor = "transparent"
$labelNetworkDepartment.text = "Network Department:"
$groupBoxNetworkinfo.controls.add($labelNetworkDepartment)
#form1: NetworkDepartmentBox
$NetworkDepartmentBox = New-Object system.windows.forms.textbox
$NetworkDepartmentBox.location = "5, 300"
$NetworkDepartmentBox.size = "180, 25"
$NetworkDepartmentBox.backcolor = "white"
$NetworkDepartmentBox.multiline = $true
$NetworkDepartmentBox.readonly = $true
$NetworkDepartmentBox.text = $NetworkDepartment
$groupBoxNetworkinfo.controls.add($NetworkDepartmentBox)
#form1: "labelNetworkCOI"
$labelNetworkCOI = New-Object system.windows.forms.label
$labelNetworkCOI.location = "5, 330"
$labelNetworkCOI.size = "150, 15"
$labelNetworkCOI.BackColor = "transparent"
$labelNetworkCOI.text = "Network COI:"
$groupBoxNetworkinfo.controls.add($labelNetworkCOI)
#form1: NetworkCOIBox
$NetworkCOIBox = New-Object system.windows.forms.textbox
$NetworkCOIBox.location = "5, 345"
$NetworkCOIBox.size = "180, 25"
$NetworkCOIBox.backcolor = "white"
$NetworkCOIBox.multiline = $true
$NetworkCOIBox.readonly = $true
$NetworkCOIBox.text = $NetworkCOI
$groupBoxNetworkinfo.controls.add($NetworkCOIBox)
#form1:"labelNetworkID"
$labelNetworkID = New-Object system.windows.forms.label
$labelNetworkID.location = "5, 375"
$labelNetworkID.size = "150, 15"
$labelNetworkID.BackColor = "transparent"
$labelNetworkID.text = "Network ID:"
$groupBoxNetworkinfo.controls.add($labelNetworkID)
#form1: NetworkIDBox
$NetworkIDBox = New-Object system.windows.forms.textbox
$NetworkIDBox.location = "5, 390"
$NetworkIDBox.size = "180, 25"
$NetworkIDBox.backcolor = "white"
$NetworkIDBox.multiline = $true
$NetworkIDBox.readonly = $true
$NetworkIDBox.text = $NetworkID
$groupBoxNetworkinfo.controls.add($NetworkIDBox)
#Save the initial state of the form
$InitialFormWindowState = $form1.WindowState
#Init the OnLoad event to correct the initial state of the form
$form1.add_Load($Form_StateCorrection_Load)
#Clean up the control events
$form1.add_FormClosed($Form_Cleanup_FormClosed)
#Show the Form
$form1.ShowDialog()
} #End Function
#Call OnApplicationLoad to initialize
if((OnApplicationLoad) -eq $true)
{
#Call the form
Call-test_pff | Out-Null
#Perform cleanup
OnApplicationExit
}