Фильтровать массив из массива - PullRequest
0 голосов
/ 14 декабря 2018

Я пытаюсь создать графический интерфейс, который в конечном итоге позволит нашей команде второй линии легко применить поиск учетных записей AD.Я дошел до сих пор, но не могу заставить PowerShell найти значение, введенное в текстовое поле, чтобы затем оценить, существует ли пользователь в AD.

Вот сценарий:

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

$Form               = New-Object System.Windows.Forms.Form
$Form.ClientSize    = '400,400'
$Form.Text          = "Add DXE Mailbox Permissions"
$Form.TopMost       = $false

$Label1             = New-Object System.Windows.Forms.Label
$Label1.Text        = "Username"
$Label1.AutoSize    = $true
$Label1.Width       = 25
$Label1.Height      = 10
$Label1.Location    = New-Object System.Drawing.Point(15, 145)
$Label1.Font        = 'Microsoft Sans Serif,10'

$TextBox1           = New-Object System.Windows.Forms.TextBox
$TextBox1.Multiline = $false
$TextBox1.Width     = 168
$TextBox1.Height    = 20
$TextBox1.Location  = New-Object System.Drawing.Point(15, 165)
$TextBox1.Font      = 'Microsoft Sans Serif,10'

$Button1            = New-Object System.Windows.Forms.Button
$Button1.Text       = "Check Username"
$Button1.Width      = 120
$Button1.Height     = 30
$Button1.Location   = New-Object System.Drawing.Point(199, 162)
$Button1.Font       = 'Microsoft Sans Serif,10'
$Button1.Add_Click($Button1_Click)

$Form.Controls.AddRange(@($Label1, $TextBox1, $Button1))

$Button1_Click = {
    $username = $Label1.Text
    $Checkuser = Get-ADUser -Identity $username
    if ($Checkuser -eq $null) {
        $Button1.Text = "Can't Find User"
        $button1.ForeColor = "Red"
    } elseif ($Checkuser -ne $null) {
        $Button1.Text = "Found User"
    }
}

[void]$Form.ShowDialog()

Я считаю, что проблема, которую я имею, связана с линией $username = $Label1.Text.Я не уверен, следует ли присваивать переменной $Label1.Text, и если да, то как мне заставить PowerShell извлечь введенный текст?Я быстро огляделся и надеюсь, что есть способ сделать это, не открывая и не закрывая другое окно.

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

Вам необходимо назначить действие $Button1_Click после , которое вы определили, иначе вы просто назначаете $null событию Click:

<# define controls here ... #>
$Form.controls.AddRange(@($Label1,$TextBox1,$Button1))

$Button1_Click = {
  $username = $Label1.text
  $Checkuser = Get-ADUser -Identity $username
  If($Checkuser -eq $null){
    $Button1.Text = "Can't Find User"
    $button1.ForeColor = "Red"
  }
  Elseif($Checkuser -ne $null){
    $Button1.Text = "Found User"
  }
}

$Button1.Add_click($Button1_Click)

[void]$Form.ShowDialog()

Если вы хотите получить имя пользователя из текстового поля, измените $username = $Label1.text на $username = $TextBox1.Text

0 голосов
/ 14 декабря 2018

Вы ссылаетесь на неправильный объект здесь:

$username = $Label1.text

Это - метка.Конечно, вы должны получить значение из TextBox:

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