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