Powershell 为列表中的每个项目创建下拉菜单

Powershell 为列表中的每个项目创建下拉菜单,powershell,powershell-2.0,powershell-3.0,Powershell,Powershell 2.0,Powershell 3.0,好的,我正在尝试为“$Cots”中的每个项目创建一个下拉菜单,并将其稍微向下移动。我有它的基本知识,以及它的基本创建,但不知道如何确切地使用“controls.add(无论什么)”来调用它,以及信息如何链接 我的代码: $Script = @{}; $COTS = @{} Function CheckProgram { Param ($Program) # Create Object $OutputObj = New-Object -TypeName PSobject

好的,我正在尝试为“$Cots”中的每个项目创建一个下拉菜单,并将其稍微向下移动。我有它的基本知识,以及它的基本创建,但不知道如何确切地使用“controls.add(无论什么)”来调用它,以及信息如何链接

我的代码:

$Script = @{}; $COTS = @{}
Function CheckProgram {
    Param ($Program)

    # Create Object
    $OutputObj = New-Object -TypeName PSobject

    $OutputObj | Add-Member -MemberType NoteProperty -Name Name -Value $Program.Product
    $OutputObj | Add-Member -MemberType NoteProperty -Name LatestVersion -Value $Program.("Latest Version")
    $OutputObj | Add-Member -MemberType NoteProperty -Name SilentInstallSwitches -Value $Program.("Silent Install Switches")
    $OutputObj | Add-Member -MemberType NoteProperty -Name InstallerPath -Value $Program.("Installer Path")
    $OutputObj | Add-Member -MemberType NoteProperty -Name RegistryIdentifier -Value ($Program.Product -replace "[0-9]" -replace "  ","*")

    IF (Test-Path $Program.("Installer Path")) {
        $OutputObj | Add-Member -MemberType NoteProperty -Name InstallerPathValid -Value "Yes"
    } ELSE {
        $OutputObj | Add-Member -MemberType NoteProperty -Name InstallerPathValid -Value "No"
    }
    $OutputObj | Add-Member -MemberType NoteProperty -Name ProductArchitectures -Value $Program.Architecture

    # Populate temporary variable with infomation from registry
    $InstalledProgram = ($COTS.Programs | Where {$_.DisplayName -like $OutputObj.RegistryIdentifier})
    IF ($InstalledProgram) {
        IF ($InstalledProgram.PSPath -like "*Wow6432Node*"){
            $OutputObj | Add-Member -MemberType NoteProperty -Name InstalledArchitecture -Value "x64"
        } ELSE {
            $OutputObj | Add-Member -MemberType NoteProperty -Name InstalledArchitecture -Value "x32"
        }
        $OutputObj | Add-Member -MemberType NoteProperty -Name Installed -Value "Yes"
        $OutputObj | Add-Member -MemberType NoteProperty -Name CurrentVersion -Value $InstalledProgram.DisplayVersion
        $OutputObj | Add-Member -MemberType NoteProperty -Name UninstallString -Value $InstalledProgram.UninstallString
    } ELSE {
        $OutputObj | Add-Member -MemberType NoteProperty -Name Installed -Value "No"
    }

    # Determine what action should be taken
    IF ($OutputObj.installed -eq "Yes") {
        IF ($OutPutObj.CurrentVersion -le $OutPutObj.LatestVersion) {
            $OutputObj | Add-Member -MemberType NoteProperty -Name InstallAction -Value "Update"
            $OutPutObj.InstallOptions = @("Install","Update","Uninstall","Resinstall","None")
        } ELSEIF ($OutputObj.CurrentVersion -ge $OutputObj.LastestVersion) {
            Write-warning "Installed version of {f} greater than expected."
            $OutputObj | Add-Member -MemberType NoteProperty -Name InstallAction -Value "Error"
            $OutPutObj.InstallOptions = @("None")
        } ELSEIF ($OutputObj.CurrentVersion -eq $OutputObj.Product) {
            $OutputObj | Add-Member -MemberType NoteProperty -Name InstallAction -Value "None"
        }
    } ELSE {
        $OutputObj | Add-Member -MemberType NoteProperty -Name InstallAction -Value "Install"
        $OutPutObj.InstallOptions = @("Install")
    }

# <Example code that doesn't work>
    $OutputObj.ComboBox = New-object System.Windows.Forms.ComboBox
    $OutputObj.ComboBox.Name = ""
    $OutputObj.ComboBox.Items.AddRange($OutPutObj.InstallAction)
    $OutputObj.ComboBox.DataBindings.DefaultDataSourceUpdateMode = 0
    $OutputObj.ComboBox.Location = New-Object System.Drawing.Point(200,200)
    $OutputObj.ComboBox.Controls.Add($ComboBox)
# </Example code that doesn't work>
    ## Add to list or update ##
    [Array]$Cots.Software += $OutputObj

}
$COTS.Load = Import-csv "$PSScriptRoot\3rdPartyCots.csv"
$COTS.AllInstalled = Get-ChildItem HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ | Get-ItemProperty
$COTS.AllInstalled += Get-ChildItem HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall\ | Get-ItemProperty
IF (Test-path HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\) { $COTS.AllInstalled += Get-ChildItem HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\ | Get-ItemProperty}
$COTS.Programs = ($Cots.AllInstalled | Where {$_.DisplayName -ne $Null -AND $_.SystemComponent -ne "1" -AND $_.ParentKeyName -eq $Null} |Select *).GetEnumerator() | Sort-Object {"$_"}
ForEach ($Cot in $Cots.load) {CheckProgram $Cot}




function MainMenuForm {

#region Import the Assemblies
[reflection.assembly]::loadwithpartialname("System.Drawing") | Out-Null
[reflection.assembly]::loadwithpartialname("System.Windows.Forms") | Out-Null

# Create Forms and Items {
$MainMenu = New-Object System.Windows.Forms.Form
$InitialFormWindowState = New-Object System.Windows.Forms.FormWindowState

#Buttons
$HomeButton = New-Object System.Windows.Forms.Button
$ScriptSettingsButton = New-Object System.Windows.Forms.Button
$COTSButton = New-Object System.Windows.Forms.Button
$MicrosoftButton = New-Object System.Windows.Forms.Button
$ConfigureButton = New-Object System.Windows.Forms.Button
$MiscToolsButton = New-Object System.Windows.Forms.Button

#Misc Items
$ProgressBar = New-Object System.Windows.Forms.ProgressBar
$StatusBar = New-Object System.Windows.Forms.StatusBar

#Tab Control
$TabControl = New-object System.Windows.Forms.TabControl

#Tabs
$HomeTab = New-Object System.Windows.Forms.TabPage
$ScriptSettingsTab = New-Object System.Windows.Forms.TabPage
$COTSTab = New-Object System.Windows.Forms.TabPage
$MicrosoftTab = New-Object System.Windows.Forms.TabPage
$ConfigureTab = New-Object System.Windows.Forms.TabPage
$MiscToolsTab = New-Object System.Windows.Forms.TabPage

$MicrosoftDataGrid = New-Object System.Windows.Forms.DataGridView
#----------------------------------------------
#Generated Event Script Blocks
#----------------------------------------------
#Unknown
$OnLoad_StateCorrection = { $MainMenu.WindowState = $InitialFormWindowState }
$OnLoad_MicrosoftDataGrid = { LoadMicrosoft }

#Buttons
$HomeButton_OnClick = { $TabControl.SelectTab($HomeTab) }
$ScriptSettingsButton_OnClick = { $TabControl.SelectTab($ScriptSettingsTab) }
$COTSButton_OnClick = {$TabControl.SelectTab($COTSTab)}
$MicrosoftButton_OnClick = {$TabControl.SelectTab($MicrosoftTab)}
$ConfigureButton_OnClick = {$TabControl.SelectTab($ConfigureTab)}
$MiscToolsButton_OnClick = {$TabControl.SelectTab($MiscToolsTab)}

#Load Main Menu
$MainMenu.ClientSize = New-Object System.Drawing.Size(665,474)
$MainMenu.DataBindings.DefaultDataSourceUpdateMode = 0
$MainMenu.Name = "MainMenu"
$MainMenu.Text = "Patching Script"
$MainMenu.TopMost = $True

# == Home Button == #
$HomeButton.Name = "HomeButton"
$HomeButton.Text = "Home"
$HomeButton.TabIndex = 2
$HomeButton.UseVisualStyleBackColor = $True
$HomeButton.add_Click($HomeButton_OnClick)
$HomeButton.DataBindings.DefaultDataSourceUpdateMode = 0
$HomeButton.Location = New-Object System.Drawing.Point(12,69)
$HomeButton.Size = New-Object System.Drawing.Size(100,35)

$MainMenu.Controls.Add($HomeButton)

# == Script Settings Button == #
$ScriptSettingsButton.Name = "ScriptSettingsButton"
$ScriptSettingsButton.Text = "Script Settings"
$ScriptSettingsButton.TabIndex = 3
$ScriptSettingsButton.UseVisualStyleBackColor = $True
$ScriptSettingsButton.add_Click($ScriptSettingsButton_OnClick)
$ScriptSettingsButton.DataBindings.DefaultDataSourceUpdateMode = 0
$ScriptSettingsButton.Size = New-Object System.Drawing.Size(100,35)
$ScriptSettingsButton.Location = New-Object System.Drawing.Point(12,110)

$MainMenu.Controls.Add($ScriptSettingsButton)

# == COTS Button == #
$COTSButton.Name = "COTSButton"
$COTSButton.Text = "C.O.T.S."
$COTSButton.TabIndex = 4
$COTSButton.UseVisualStyleBackColor = $True
$COTSButton.add_Click($COTSButton_OnClick)
$COTSButton.DataBindings.DefaultDataSourceUpdateMode = 0
$COTSButton.Size = New-Object System.Drawing.Size(100,35)
$COTSButton.Location = New-Object System.Drawing.Point(12,151)

$MainMenu.Controls.Add($COTSButton)

# == Microsoft Button == #
$MicrosoftButton.Name = "MicrosoftButton"
$MicrosoftButton.Text = "Microsoft Patches"
$MicrosoftButton.TabIndex = 5
$MicrosoftButton.UseVisualStyleBackColor = $True
$MicrosoftButton.add_Click($MicrosoftButton_OnClick)
$MicrosoftButton.DataBindings.DefaultDataSourceUpdateMode = 0
$MicrosoftButton.Size = New-Object System.Drawing.Size(100,35)
$MicrosoftButton.Location = New-Object System.Drawing.Point(12,192)

$MainMenu.Controls.Add($MicrosoftButton)

# == Configure Button == #
$ConfigureButton.Name = "ConfigureButton"
$ConfigureButton.Text = "Configure Script"
$ConfigureButton.TabIndex = 6
$ConfigureButton.UseVisualStyleBackColor = $True
$ConfigureButton.add_Click($ConfigureButton_OnClick)
$ConfigureButton.DataBindings.DefaultDataSourceUpdateMode = 0
$ConfigureButton.Location = New-Object System.Drawing.Point(12,233)
$ConfigureButton.Size = New-Object System.Drawing.Size(100,35)

$MainMenu.Controls.Add($ConfigureButton)

# == Misc Tools Button == #
$MiscToolsButton.Name = "MiscToolsButton"
$MiscToolsButton.Text = "Misc Tools"
$MiscToolsButton.TabIndex = 7
$MiscToolsButton.UseVisualStyleBackColor = $True
$MiscToolsButton.add_Click($MiscToolsButton_OnClick)
$MiscToolsButton.DataBindings.DefaultDataSourceUpdateMode = 0
$MiscToolsButton.Location = New-Object System.Drawing.Point(12,274)
$MiscToolsButton.Size = New-Object System.Drawing.Size(100,35)

$MainMenu.Controls.Add($MiscToolsButton)

# == Tab Control == #
$TabControl.Name = "TabControl"
$TabControl.TabIndex = 4
$TabControl.SelectedIndex = 0
$TabControl.DataBindings.DefaultDataSourceUpdateMode = 0
$TabControl.Location = New-Object System.Drawing.Point(124,65)
$TabControl.Size = New-Object System.Drawing.Size(525,375)
$TabControl.visible = $True
$MainMenu.Controls.Add($TabControl)

$TabControl.SizeMode = "Fixed"
$TabControl.ItemSize = New-Object System.Drawing.Size(0, 1)
$TabControl.Appearance = "Buttons"

## Possibly Unneeded Info
#$ScriptSettingsTab.Location = New-Object System.Drawing.Point(4,22)
#$ScriptSettingsTab.Size = New-Object System.Drawing.Size(535,374)

# == Home Tab == #
$HomeTab.Name = "HomeTab"
$HomeTab.Text = "Home"
$HomeTab.TabIndex = 1
$HomeTab.UseVisualStyleBackColor = $True
$HomeTab.DataBindings.DefaultDataSourceUpdateMode = 0

$TabControl.Controls.Add($HomeTab)

# == Script Settings Tab == #
$ScriptSettingsTab.Name = "ScriptSettingsTab"
$ScriptSettingsTab.Text = "Home"
$ScriptSettingsTab.TabIndex = 2
$ScriptSettingsTab.UseVisualStyleBackColor = $True
$ScriptSettingsTab.DataBindings.DefaultDataSourceUpdateMode = 0
$ScriptSettingsTab.BackColor = [System.Drawing.Color]::CornflowerBlue

$TabControl.Controls.Add($ScriptSettingsTab)

# == C.O.T.S. Tab == #
$COTSTab.Name = "COTSTab"
$COTSTab.Text = "Home"
$COTSTab.TabIndex = 2
$COTSTab.UseVisualStyleBackColor = $True
$COTSTab.DataBindings.DefaultDataSourceUpdateMode = 0
$COTSTab.BackColor = [System.Drawing.Color]::Blue

$TabControl.Controls.Add($COTSTab)

# == Microsoft Patches Tab == #
$MicrosoftTab.Name = "MicrosoftTab"
$MicrosoftTab.Text = "Home"
$MicrosoftTab.TabIndex = 2
$MicrosoftTab.UseVisualStyleBackColor = $True
$MicrosoftTab.DataBindings.DefaultDataSourceUpdateMode = 0
$MicrosoftTab.BackColor = [System.Drawing.Color]::Green

$TabControl.Controls.Add($MicrosoftTab)
# == Microsoft Data Grid == #
$MicrosoftDataGrid.Name
$MicrosoftDataGrid.Size = New-Object System.Drawing.Size(492,308)
$MicrosoftDataGrid.DataBindings.DefaultDataSourceUpdateMode = 0 
$MicrosoftDataGrid.HeaderForeColor = [System.Drawing.Color]::FromArgb(255,0,0,0) 
$MicrosoftDataGrid.Name = "MicrosoftDataGrid" 
$MicrosoftDataGrid.DataMember = "" 
$MicrosoftDataGrid.TabIndex = 0 
$MicrosoftDataGrid.Location = New-Object System.Drawing.Point(13,48)

$MicrosoftDataGrid.autosize = $true
$MicrosoftTab.Controls.Add($MicrosoftDataGrid)

# == Configure Script Tab == #
$ConfigureTab.Name = "ConfigureTab"
$ConfigureTab.Text = "Home"
$ConfigureTab.TabIndex = 2
$ConfigureTab.UseVisualStyleBackColor = $True
$ConfigureTab.DataBindings.DefaultDataSourceUpdateMode = 0
$ConfigureTab.BackColor = [System.Drawing.Color]::Red

$TabControl.Controls.Add($ConfigureTab)

# == Misc Tools Tab == #
$MiscToolsTab.Name = "ConfigureTab"
$MiscToolsTab.Text = "Home"
$MiscToolsTab.TabIndex = 2
$MiscToolsTab.UseVisualStyleBackColor = $True
$MiscToolsTab.DataBindings.DefaultDataSourceUpdateMode = 0
$MiscToolsTab.BackColor = [System.Drawing.Color]::blue

$TabControl.Controls.Add($MiscToolsTab)

# == Progress Bar == #
$progressBar.Name = "progressBar"
$progressBar.DataBindings.DefaultDataSourceUpdateMode = 0
$progressBar.Location = New-Object System.Drawing.Point(589,458)
$progressBar.Size = New-Object System.Drawing.Size(75,15)
$progressBar.TabIndex = 0

$MainMenu.Controls.Add($progressBar)

# == Status bar == #
$StatusBar.Name = "StatusBar"
$StatusBar.Text = "statusBar1"
$StatusBar.TabIndex = 1
$StatusBar.Size = New-Object System.Drawing.Size(665,18)
$StatusBar.Location = New-Object System.Drawing.Point(0,456)
$StatusBar.DataBindings.DefaultDataSourceUpdateMode = 0
$StatusBar.add_PanelClick($statusBar_PanelClick)

$MainMenu.Controls.Add($StatusBar)

# == Save and Open Form == #
$InitialFormWindowState = $MainMenu.WindowState

$MainMenu.add_Load($OnLoad_StateCorrection)
$MainMenu.add_Load($OnLoad_MicrosoftDataGrid)

$MainMenu.ShowDialog()| Out-Null

} #End Function

MainMenuForm
$Script=@{}$COTS=@{}
函数检查程序{
Param($Program)
#创建对象
$OutputObj=新对象-类型名称PSobject
$OutputObj |添加成员-成员类型NoteProperty-名称-值$Program.Product
$OutputObj |添加成员-成员类型NoteProperty-名称最新版本-值$Program.(“最新版本”)
$OutputObj |添加成员-成员类型NoteProperty-名称SilentInstallSwitches-值$Program.(“静默安装开关”)
$OutputObj |添加成员-成员类型NoteProperty-名称InstallerPath-值$Program.(“安装程序路径”)
$OutputObj |添加成员-成员类型NoteProperty-名称注册表标识符-值($Program.Product-replace“[0-9]”-replace“*”)
IF(测试路径$程序。(“安装程序路径”)){
$OutputObj |添加成员-成员类型NoteProperty-名称InstallerPathValid-值“是”
}否则{
$OutputObj |添加成员-成员类型NoteProperty-名称InstallerPathValid-值“否”
}
$OutputObj |添加成员-成员类型NoteProperty-名称ProductArchitectures-值$Program.Architecture
#使用注册表中的信息填充临时变量
$InstalledProgram=($COTS.PROGRAMES |其中{$\.DisplayName-like$OutputObj.RegistryIdentifier})
如果($InstalledProgram){
如果($InstalledProgram.PSPath-类似“*Wow6432Node*”){
$OutputObj |添加成员-成员类型NoteProperty-名称InstalledArchitecture-值“x64”
}否则{
$OutputObj |添加成员-成员类型NoteProperty-名称InstalledArchitecture-值“x32”
}
$OutputObj |添加成员-成员类型NoteProperty-已安装名称-值“是”
$OutputObj |添加成员-成员类型NoteProperty-名称CurrentVersion-值$InstalledProgram.DisplayVersion
$OutputObj |添加成员-成员类型NoteProperty-名称UninstallString-值$InstalledProgram.UninstallString
}否则{
$OutputObj |添加成员-成员类型NoteProperty-已安装名称-值“否”
}
#确定应采取的行动
如果($OutputObj.installed-等式“是”){
IF($OutPutObj.CurrentVersion-le$OutPutObj.LatestVersion){
$OutputObj |添加成员-成员类型NoteProperty-名称InstallAction-值“更新”
$OutPutObj.InstallOptions=@(“安装”、“更新”、“卸载”、“重新安装”、“无”)
}ELSEIF($OutputObj.CurrentVersion-ge$OutputObj.LastTestVersion){
写入警告“安装的{f}版本高于预期。”
$OutputObj |添加成员-成员类型NoteProperty-名称InstallAction-值“错误”
$OutPutObj.InstallOptions=@(“无”)
}ELSEIF($OutputObj.CurrentVersion-eq$OutputObj.Product){
$OutputObj |添加成员-成员类型NoteProperty-名称InstallAction-值“无”
}
}否则{
$OutputObj |添加成员-成员类型NoteProperty-名称InstallAction-值“Install”
$OutPutObj.InstallOptions=@(“安装”)
}
# 
##添加到列表或更新##
[阵列]$Cots.Software+=$OutputObj
}
$COTS.Load=导入csv“$PSScriptRoot\3rdPartyCots.csv”
$COTS.ALINSTALLED=Get-ChildItem HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\| Get-ItemProperty
$COTS.ALINSTALLED+=Get-ChildItem HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall\ | Get-ItemProperty
如果(测试路径HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\){$COTS.AllInstalled+=Get ChildItem HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\ | Get ItemProperty}
$COTS.PROGRAMES=($COTS.AllInstalled |其中{$$\.DisplayName-ne$Null-和$\.SystemComponent-ne“1”-和$\.ParentKeyName-eq$Null}选择*).GetEnumerator()|排序对象{$\}
ForEach($Cots.load中的Cot){CheckProgram$Cot}
函数MainMenuForm{
#区域导入程序集
[reflection.assembly]::loadwithpartialname(“System.Drawing”)| Out Null
[reflection.assembly]::loadwithpartialname(“System.Windows.Forms”)| Out Null
#创建表单和项目{
$main菜单=新建对象System.Windows.Forms.Form
$InitialFormWindowsState=新对象System.Windows.Forms.FormWindowsState
#钮扣
$HomeButton=新建对象System.Windows.Forms.Button
$ScriptSettingsButton=新建对象System.Windows.Forms.Button
$COTSButton=新建对象System.Windows.Forms.Button
$MicrosoftButton=新建对象System.Windows.Forms.Button
$ConfigureButton=新建对象System.Windows.Forms.Button
$MiscToolsButton=新建对象System.Windows.Forms.Button
#杂项
$ProgressBar=新对象System.Windows.Forms.ProgressBar
$StatusBar=新对象System.Windows.Forms.StatusBar
#选项卡控件
$TabControl=新对象System.Windows.Forms.TabControl
#标签
$HomeTab=新对象System.Windows.Forms.TabPage
$ScriptSettingsTab=新对象System.Windows.Forms.TabPage
$COTSAB=新对象System.Windows.Forms.TabPage
$MicrosoftTab=新对象System.Windows.Forms.TabPage
$ConfigureTab=新对象System.Windows.Forms.TabPage
$MiscToolsTab=新对象System.Windows.Forms.TabPage
$MicrosoftDataGrid=新对象System.Windows.Forms.DataGridView
#----------------------------------------------
#生成的事件脚本块
#----------------------------------------------
#不为人知
$OnLoad_StateCorrection={$MainMenu.WindowsState=$InitialFormWindowsState}
$OnLoad_MicrosoftDataGrid={LoadMicrosoft}
#钮扣
$HomeButton\u OnClick={$TabControl.SelectTab($HomeTab)}
$ScriptSettingsButton_OnClick={$TabControl.SelectTab($ScriptSettingsTab)}
$COTSButton_OnClick={$TabControl.SelectTab($COTSTab)}
$MicrosoftButton_OnClick={$TabControl.SelectTab($MicrosoftTab)}
$ConfigureButton_OnClick={$TabControl
$OutputObj = New-Object -TypeName PSobject
$OutputObj.ComboBox = New-object System.Windows.Forms.ComboBox
# <Example code that does work>
    $ComboBox = New-object System.Windows.Forms.ComboBox
    $ComboBox.Name = ""
    $ComboBox.Items.AddRange($OutPutObj.InstallAction)
    $ComboBox.DataBindings.DefaultDataSourceUpdateMode = 0
    $ComboBox.Location = New-Object System.Drawing.Point(200,200)
    $OutputObj | Add-Member noteproperty "Combobox" $ComboBox
# </Example code that does work>
# Create Object
$OutputObj = New-Object -TypeName PSobject
$OutputObj | Add-Member -MemberType NoteProperty -Name Name -Value $Program.Product
...
$OutputObj | Add-Member -MemberType NoteProperty -Name RegistryIdentifier -Value ($Program.Product -replace "[0-9]" -replace "  ","*")
$OutputObj | Add-Member NoteProperty "InstallAction" $null
$OutputObj | Add-Member NoteProperty "InstallOptions" $null
$OutputObj | Add-Member NoteProperty "ComboBox" $null
...
$OutputObj.ComboBox = $ComboBox
$OutputObj.InstallAction = "Install"
...
# Determine what action should be taken
IF ($OutputObj.installed -eq "Yes") {
    IF ($OutPutObj.CurrentVersion -le $OutPutObj.LatestVersion) {
        $OutputObj.InstallAction = "Update"
        $OutPutObj.InstallOptions = @("Install","Update","Uninstall","Resinstall","None")
    } ELSEIF ($OutputObj.CurrentVersion -ge $OutputObj.LastestVersion) {
        Write-warning "Installed version of {f} greater than expected."
        $OutputObj.InstallAction = "Error"
        $OutPutObj.InstallOptions = @("None")
    } ELSEIF ($OutputObj.CurrentVersion -eq $OutputObj.Product) {
        $OutputObj.InstallAction = "None"
    }
} ELSE {
    $OutputObj.InstallAction = "Install"
    $OutPutObj.InstallOptions = @("Install")
}
$COTSTab.Controls.Add($YourCustomObject.ComboBox)