如何从PowerShell中的列表框中捕获所选值?

如何从PowerShell中的列表框中捕获所选值?,powershell,if-statement,listbox,popup,chocolatey,Powershell,If Statement,Listbox,Popup,Chocolatey,我试图创建一个弹出窗口,要求用户选择一个部门,然后根据该部门运行Choco命令,以安装每个部门需要使用的软件。我遇到了一个问题,它没有返回所选的#var 到目前为止的故障排除表明,无论我在列表中选择什么项目,它都只运行第一个IF部分下的命令,然后停止运行 我试图缩小代码的比例,让它只打印每个业务部门,这样我就可以检查列表框设置,但找不到缺少的内容 [void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Fo

我试图创建一个弹出窗口,要求用户选择一个部门,然后根据该部门运行Choco命令,以安装每个部门需要使用的软件。我遇到了一个问题,它没有返回所选的#var

到目前为止的故障排除表明,无论我在列表中选择什么项目,它都只运行第一个IF部分下的命令,然后停止运行

我试图缩小代码的比例,让它只打印每个业务部门,这样我就可以检查列表框设置,但找不到缺少的内容

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

$objForm = New-Object System.Windows.Forms.Form 
$objForm.Text = "Department"
$objForm.Size = New-Object System.Drawing.Size(249,190) 
$objForm.StartPosition = "CenterScreen"

#OK Button action
$objForm.KeyPreview = $True
$objForm.Add_KeyDown({if ($_.KeyCode -eq "Enter") 
    {$TSDepartment=$objListBox.SelectedItem;$objForm.Close()}})

#Ok Button
$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Size(10,115)
$OKButton.Size = New-Object System.Drawing.Size(200,30)
$OKButton.Text = "OK"
$OKButton.Add_Click({$TSDepartment=$objListBox.SelectedItem;$objForm.Close()})
$objForm.Controls.Add($OKButton)

# List box Lable
$objLabel = New-Object System.Windows.Forms.Label
$objLabel.Location = New-Object System.Drawing.Size(10,20) 
$objLabel.Size = New-Object System.Drawing.Size(200,20) 
$objLabel.Text = "Please select a Department:"
$objForm.Controls.Add($objLabel) 

#list box Side
$objListBox = New-Object System.Windows.Forms.ListBox 
$objListBox.Location = New-Object System.Drawing.Size(10,40) 
$objListBox.Size = New-Object System.Drawing.Size(200,20) 
$objListBox.Height = 70

#pick list
[void] $objListBox.Items.Add("Call-Center")
[void] $objListBox.Items.Add("Law-Office")
[void] $objListBox.Items.Add("Admin-Support")
[void] $objListBox.Items.Add("Base")
[void] $objListBox.Items.Add("IT")

$objForm.Controls.Add($objListBox) 
$objForm.Topmost = $True
$objForm.Add_Shown({$objForm.Activate()})
[void] $objForm.ShowDialog()

#resulting var
#$TSDepartment

# Simple PowerShell ElseIf
# Admin-Support softwre list
if ($TSDepartment = "Admin-Support")  
{
'Admin Support Software'
choco upgrade chocolatey    
get-executionpolicy         
set-executionpolicy remotesigned                        

choco   install 7zip    --ignore-checksum
choco   install adobereader --ignore-checksum
choco   install cutepdf --ignore-checksum
choco   install jre8    --ignore-checksum
choco   install Silverlight --ignore-checksum
choco   install vlc --ignore-checksum
choco   install webex   --ignore-checksum

} 

# Law Office softwre list
ElseIf ( $TSDepartment = "Law-Office")  
{
'Law Office Software'
choco upgrade chocolatey    
get-executionpolicy
set-executionpolicy remotesigned

choco install 7zip --ignore-checksum
choco install adobereader --ignore-checksum
choco install cutepdf --ignore-checksum
choco install vlc  --ignore-checksum
choco install jre8 --ignore-checksum
choco install rsclientprint --ignore-checksum
choco install Silverlight --ignore-checksum
choco install webex --ignore-checksum
} 

# Call Center softwre list
ElseIf ( $TSDepartment = "Call-Center")  
{
'Call Center Software'
choco upgrade chocolatey    
get-executionpolicy         
set-executionpolicy remotesigned            

choco   install adobereader --ignore-checksum
choco   install cutepdf --ignore-checksum
choco   install jre8    --ignore-checksum
choco   install Silverlight --ignore-checksum
choco   install vlc --ignore-checksum
choco   install webex   --ignore-checksum
choco   install Silverlight --ignore-checksum
choco   install softphone   --ignore-checksum
}

# IT softwre list
ElseIf ( $TSDepartment = "IT")  
{
'IT Software'
choco upgrade chocolatey    
get-executionpolicy         
set-executionpolicy remotesigned            

choco   install 7zip    --ignore-checksum
choco   install adobereader --ignore-checksum
choco   install cutepdf --ignore-checksum
choco   install jre8    --ignore-checksum
choco   install Silverlight --ignore-checksum
choco   install vlc --ignore-checksum
choco   install webex   --ignore-checksum
choco   install Firefox --ignore-checksum
choco   install foxitreader --ignore-checksum
choco   install Ghostscript.app --ignore-checksum
choco   install GoogleChrome    --ignore-checksum
choco   install greenshot   --ignore-checksum
choco   install notepadplusplus --ignore-checksum
choco   install PowerShell  --ignore-checksum
choco   install putty   --ignore-checksum
choco   install sysinternals    --ignore-checksum
choco   install windirstat  --ignore-checksum
choco   install wireshark   --ignore-checksum
}

# Base Software List
ElseIf ( $TSDepartment = "Base")  
{
'Base Software'
choco upgrade chocolatey    
get-executionpolicy         
set-executionpolicy remotesigned            

choco   install adobereader --ignore-checksum
choco   install cutepdf --ignore-checksum
choco   install jre8    --ignore-checksum
choco   install Silverlight --ignore-checksum
choco   install webex   --ignore-checksum
}

# null Software List
Else
{
'Upgrade Choco'
choco upgrade chocolatey    
get-executionpolicy         
set-executionpolicy remotesigned            
}

PowerShell很容易出错,但=是一项任务:

$TSDepartment -eq "Admin-Support"
这是比较运算符

进一步说明:

  • -不等于
  • -ceq->区分大小写等于
  • -cne->Case Not Equals

谢谢!!我还让人将我的Var称为错误的,并意外地将其编辑掉了#结果Var$TSDepartment=$objListBox.Text
它是
-ne
而不是
-neq