locked
Listbox powershell RRS feed

  • Вопрос

  • Здравствуйте, подскажите как получить две строки из listbox? Ну то-есть выделяю допустим два значения и мне эти два значения надо отработать, получить короче.

    И потом каждую строку разделить и присвоить переменную, чтоб потом можно ее использовать

    $x = @()
    Add-Type -AssemblyName System.Windows.Forms
    Add-Type -AssemblyName System.Drawing
    #главное окно ввода
    $form = New-Object System.Windows.Forms.Form 
    $form.Text = "Добавление пользователей OU в группы"
    $form.Size = New-Object System.Drawing.Size(420,220) 
    $form.StartPosition = "CenterScreen"
    
    $OKButton = New-Object System.Windows.Forms.Button
    $OKButton.Location = New-Object System.Drawing.Size(100,150)
    $OKButton.Size = New-Object System.Drawing.Size(75,23)
    $OKButton.Text = "OK"
    $OKButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
    #$form.AcceptButton = $OKButton
    
    $OKButton.Add_Click(
       {
            foreach ($Item in $objListbox.SelectedItems)
                {$x += $Item}
            $Form.Close()
       })
    
    $form.Controls.Add($OKButton)
    
    $CancelButton = New-Object System.Windows.Forms.Button
    $CancelButton.Location = New-Object System.Drawing.Size(220,150)
    $CancelButton.Size = New-Object System.Drawing.Size(75,23)
    $CancelButton.Text = "Cancel"
    $CancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
    #$form.CancelButton = $CancelButton
    $CancelButton.Add_Click({$Form.Close()})
    $form.Controls.Add($CancelButton)
    #надпись над окном ввода OU
    $label = New-Object System.Windows.Forms.Label
    $label.Location = New-Object System.Drawing.Point(10,20) 
    $label.Size = New-Object System.Drawing.Size(280,20) 
    $label.Text = "Пожалуйста выберите путь до OU:"
    $form.Controls.Add($label) 
    #окно ввода OU
    $DefaultText = get-ADOrganizationalUnit -Filter * -SearchBase "OU=Admin_TEST,OU=GIVCTF_OU,OU=ZF,DC=npr,DC=nornick,DC=ru" | Select-Object -ExpandProperty DistinguishedName
    $comboBox = New-Object System.Windows.Forms.comboBox 
    $comboBox.Location = New-Object System.Drawing.Point(10,40) 
    $comboBox.Size = New-Object System.Drawing.Size(390,20)
    foreach($OU in $DefaultText)
    {
      $comboBox.Items.add($OU)
    }
    $form.Controls.Add($comboBox) 
    #надпись над окном ввода Group
    $label1 = New-Object System.Windows.Forms.Label
    $label1.Location = New-Object System.Drawing.Point(10,70) 
    $label1.Size = New-Object System.Drawing.Size(280,20) 
    $label1.Text = "Пожалуйста выделите имя Group:"
    $form.Controls.Add($label1) 
    #окно ввода Group
    $objListbox = New-Object System.Windows.Forms.ListBox 
    $objListbox.Location = New-Object System.Drawing.Size(10,90) 
    $objListbox.Size = New-Object System.Drawing.Size(390,20) 
    
    $objListbox.SelectionMode = "MultiExtended"
    $objListbox.Items.Add("Group")
    $objListbox.Items.Add("Group1")
    $objListBox.BackColor = "cyan"
    $objListbox.Height = 40
    $Form.Controls.Add($objListbox) 
    $Form.Topmost = $True 
    
    $form.Add_Shown({$form.Activate()})
    $result = $form.ShowDialog()
    
    
    $x
    if ($result -eq [System.Windows.Forms.DialogResult]::OK)
    {
    $Users = Get-ADUser -Filter * -SearchBase "OU=user,DC=domen,DC=ru" 
    foreach ($User in $Users) {Add-ADGroupMember $objListbox.text -Member $Users}
    }



    17 мая 2015 г. 7:28

Ответы

  • Разобрался, вот что у меня получилось:

    $x = @()
    Add-Type -AssemblyName System.Windows.Forms
    Add-Type -AssemblyName System.Drawing
    #главное окно ввода
    $objForm = New-Object System.Windows.Forms.Form 
    $objForm.Text = "Добавление пользователей OU в группы"
    $objForm.Size = New-Object System.Drawing.Size(420,220) 
    $objForm.StartPosition = "CenterScreen"
    
    $objForm.KeyPreview = $True
    
    $objForm.Add_KeyDown({if ($_.KeyCode -eq "Enter") 
        {
            foreach ($objItem in $objListbox.SelectedItems)
                {$x += $objItem
                $Users = Get-ADUser -Filter * -SearchBase $comboBox.Text
                foreach ($User in $Users) {Add-ADGroupMember $objItem -Member $Users}
                }
            $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(100,150)
    $OKButton.Size = New-Object System.Drawing.Size(75,23)
    $OKButton.Text = "OK"
    $OKButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
    #$form.AcceptButton = $OKButton
    
    $OKButton.Add_Click(
       {
            foreach ($objItem in $objListbox.SelectedItems)
                {$x += $objItem
                $Users = Get-ADUser -Filter * -SearchBase $comboBox.Text
                foreach ($User in $Users) {Add-ADGroupMember $objItem -Member $Users}
                }
            $objForm.Close()
       })
    
    $objForm.Controls.Add($OKButton)
    
    $CancelButton = New-Object System.Windows.Forms.Button
    $CancelButton.Location = New-Object System.Drawing.Size(220,150)
    $CancelButton.Size = New-Object System.Drawing.Size(75,23)
    $CancelButton.Text = "Cancel"
    $CancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
    #$form.CancelButton = $CancelButton
    $CancelButton.Add_Click({$Form.Close()})
    $objForm.Controls.Add($CancelButton)
    #надпись над окном ввода OU
    $label = New-Object System.Windows.Forms.Label
    $label.Location = New-Object System.Drawing.Point(10,20) 
    $label.Size = New-Object System.Drawing.Size(280,20) 
    $label.Text = "Пожалуйста выберите путь до OU:"
    $objForm.Controls.Add($label) 
    #окно ввода OU
    $DefaultText = get-ADOrganizationalUnit -Filter * -SearchBase "OU=Users,DC=Domain,DC=ru" | Select-Object -ExpandProperty DistinguishedName
    $comboBox = New-Object System.Windows.Forms.comboBox 
    $comboBox.Location = New-Object System.Drawing.Point(10,40) 
    $comboBox.Size = New-Object System.Drawing.Size(390,20)
    foreach($OU in $DefaultText)
    {
      $comboBox.Items.add($OU)
    }
    $objForm.Controls.Add($comboBox) 
    #надпись над окном ввода Group
    $label1 = New-Object System.Windows.Forms.Label
    $label1.Location = New-Object System.Drawing.Point(10,70) 
    $label1.Size = New-Object System.Drawing.Size(280,20) 
    $label1.Text = "Пожалуйста введите имя Group:"
    $objForm.Controls.Add($label1) 
    #окно ввода Group
    $objListbox = New-Object System.Windows.Forms.ListBox 
    $objListbox.Location = New-Object System.Drawing.Size(10,90) 
    $objListbox.Size = New-Object System.Drawing.Size(390,20) 
    
    $objListbox.SelectionMode = "MultiExtended"
    
    $objListbox.Items.Add("Group")
    $objListbox.Items.Add("Group1")
    $objListBox.BackColor = "cyan"
    $objListbox.Height = 40
    $objForm.Controls.Add($objListbox) 
    $objForm.Topmost = $True 
    
    $objForm.Add_Shown({$form.Activate()})
    $result = $objForm.ShowDialog()
    
    $x

    18 мая 2015 г. 2:47