none
Need help with script capturing the results from selection box RRS feed

  • Question

  • I found a script online and changed the selection text box to a get command. The list shows from ADUC, I can select the OU and then click OK, the box will close, but I am unable to capture the results. There are 2 variables in the get command that are from another part of the script. Can someone tell me what I am missing.

    My goal is to have the selection write to a variable like $result = ------

     

    [void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
    [void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")

    $objForm = New-Object System.Windows.Forms.Form
    $objForm.Text = "Select a Computer"
    $objForm.Size = New-Object System.Drawing.Size(400,200)
    $objForm.StartPosition = "CenterScreen"

    $objForm.KeyPreview = $True
    $objForm.Add_KeyDown({if ($_.KeyCode -eq "Enter")
        {$x=$objListBox.SelectedItem;$objForm.Close()}})
    $objForm.Add_KeyDown({if ($_.KeyCode -eq "Escape")
        {$objForm.Close()}})

    $OKButton = New-Object System.Windows.Forms.Button
    $OKButton.Location = New-Object System.Drawing.Size(75,120)
    $OKButton.Size = New-Object System.Drawing.Size(75,23)
    $OKButton.Text = "OK"
    $OKButton.Add_Click({$x=$objListBox.SelectedItem;$objForm.Close()})
    $objForm.Controls.Add($OKButton)

    $CancelButton = New-Object System.Windows.Forms.Button
    $CancelButton.Location = New-Object System.Drawing.Size(150,120)
    $CancelButton.Size = New-Object System.Drawing.Size(75,23)
    $CancelButton.Text = "Cancel"
    $CancelButton.Add_Click({$objForm.Close()})
    $objForm.Controls.Add($CancelButton)

    $objLabel = New-Object System.Windows.Forms.Label
    $objLabel.Location = New-Object System.Drawing.Size(10,20)
    $objLabel.Size = New-Object System.Drawing.Size(280,20)
    $objLabel.Text = "Please select an Organization:"
    $objForm.Controls.Add($objLabel)

    $objListBox = New-Object System.Windows.Forms.ListBox
    $objListBox.Location = New-Object System.Drawing.Size(10,40)
    $objListBox.Size = New-Object System.Drawing.Size(375,200)
    $objListBox.Height = 80

    Get-ADOrganizationalUnit -LDAPFilter '(name=*)' -SearchBase $OUSub -SearchScope OneLevel | Select-Object -ExpandProperty name | ForEach-Object {[void] $objListBox.Items.Add($_)}

    $objForm.Controls.Add($objListBox)

    $objForm.Topmost = $True

    $objForm.Add_Shown({$objForm.Activate()})
    [void] $objForm.ShowDialog()

    $x

    Thank you!

    Paul


    Duramaxster

    Friday, May 1, 2015 2:54 AM

Answers

  • This gets it.

    $objListBox.SelectedItem

    Faster:

    $OUNames=Get-ADOrganizationalUnit -LDAPFilter '(name=*)' -SearchBase $OUSub -SearchScope OneLevel | Select-Object -ExpandProperty name 
    $objListBox.Items.AddRange($OUNames)


    \_(ツ)_/

    • Marked as answer by Duramaxster Friday, May 1, 2015 1:20 PM
    Friday, May 1, 2015 3:18 AM