如何在powershell 2.0中设置自动完成功能?

时间:2015-09-16 00:43:53

标签: forms powershell autocomplete powershell-v2.0

我有一个由CSV文件填充的下拉菜单。我不得不改变我的代码以使其适用于v2。我无法弄清楚的最后一件事是自动完成。我希望能够输入列表框并让它从列表中提出一些选项。它在v3中工作正常,但不是v2。

以下是重要的部分......

$filecheck = "$dir\Apps\Customers.csv"
If(Test-Path -path $filecheck) {
    $Customers = Import-CSV "$dir\Apps\Customers.csv" -Header $headers
    $List = $customers | Select-Object -Expand name | where {$_ -ne ""} | where {$_ -ne "Name"} | Sort-Object
}

ForEach ($Items in $List) {

    $companybox.Items.Add($Items)

}

$companybox.AutoCompleteSource = 'CustomSource'
$companybox.AutoCompleteMode = 'SuggestAppend'
$List | % {$companybox.AutoCompleteCustomSource.AddRange($_) }

$Form1.Controls.Add($companybox)

非常感谢任何帮助。我已经四处看了看但是找不到v2。

感谢。

1 个答案:

答案 0 :(得分:0)

让它发挥作用。我将-STA添加到运行脚本的批处理文件中,以将其更改为Single Thread Apartment。

我的批处理文件现在看起来像是以管理员身份在STA中运行脚本...

SET Dir=%~dp0
SET PSPath=%Dir%Script.ps1
PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Start-Process PowerShell -ArgumentList '-STA -NoProfile -ExecutionPolicy Bypass -File ""%PSPath%""' -Verb RunAs}";

另一种选择是把它放在PS脚本中......

if ([System.Threading.Thread]::CurrentThread.ApartmentState -eq [System.Threading.ApartmentState]::MTA)
{
powershell.exe -Sta -File $MyInvocation.MyCommand.Path
return
}

然而,第二个选项破坏了我必须在启动时隐藏控制台窗口的代码。