组合框选择变量

时间:2021-06-11 08:53:37

标签: powershell variables combobox buttonclick

我正在编写一个 GUI 脚本来将网络共享作为驱动器映射。我已经(在其他 SO 用户的帮助下)创建了一个列出未使用的驱动器号的工作组合框。我现在想做的是在单击按钮后将选定的组合框项目捕获到一个变量中,以便在另一个尚未实现的脚本部分中使用。到目前为止,我已经设法让脚本“写入主机”所选项目。请帮忙

$form = New-Object System.Windows.Forms.Form
$form.Text = 'Test' 
$form.Size = New-Object System.Drawing.Size(280,400) 
$form.StartPosition = 'Manual'
$form.Location      = '10,10'
$form.Topmost = $true  

$button = New-Object System.Windows.Forms.Button
$button.Size = New-Object System.Drawing.Size(50,20)
$button.Location = New-Object System.Drawing.Size(20,20)
$button.Text = "Literki"
$button.Add_Click($button_click)

$button2 = New-Object System.Windows.Forms.Button
$button2.Size = New-Object System.Drawing.Size(50,20)
$button2.Location = New-Object System.Drawing.Size(20,80)
$button2.Text = "Text"
$button2.Add_Click($button_click2)

$comboBox1 = New-Object System.Windows.Forms.ComboBox 
$comboBox1.Location = New-Object System.Drawing.Point(80, 55) 
$comboBox1.Size = New-Object System.Drawing.Size(98, 10) 
$comboBox1.Add_SelectedIndexChanged(
    { $A =$ComboBox1.Text
    write-host $A}
    )
$ComboBox1.DropDownStyle = [System.Windows.Forms.ComboBoxStyle]::DropDownList;


$AllLetters = 67..90 | ForEach-Object {[char]$_ + ":"}
$UsedLetters = Get-WmiObject Win32_LogicalDisk | Select -Expand DeviceID
$FreeLetters = $AllLetters | Where-Object {$UsedLetters -notcontains $_}
ForEach ($Letter in $FreeLetters) { $comboBox1.Items.Add($Letter) }



$button_click = {Write-Host $FreeLetters} 

$button_click2 = {write-host $A}

$form.Controls.AddRange(@($button, $combobox1,$button2))
$form.ShowDialog()

1 个答案:

答案 0 :(得分:0)

您需要限定变量的范围,以便它在函数之外可用。

$comboBox1.Add_SelectedIndexChanged({
    $Script:A =$ComboBox1.Text
})
$button_click2 = {Write-Host $Script:A}

查看https://www.varonis.com/blog/powershell-variable-scope/了解更多详情