选择性问题间歇性地工作



我有一些有时起作用的代码,而其他代码则无效。我看到失败时没有错误,所以我被认为是间歇性的。

我正在使用Select-string cmdlet,它将找到许多匹配项,这就是我想要的。

我也使用与测试相同的文本文件,因此它不是正在搜索的数据更改。

$Hospinput.Text是要搜索的项目。

搜索文件的内容是:

Windows 7 Clinical Complete Nursing A3S
Windows 7 Clinical Complete Nursing A3S Wireless
Windows 7 Clinical Complete Nursing A4N
Windows 7 Clinical Complete Nursing A4N Wireless
Windows 7 Clinical Complete Nursing A4S
Windows 7 Clinical Complete Nursing A4S Wireless
Windows 7 Clinical Complete Observation
Windows 7 Clinical Complete Observation Wireless
SPU Fastpass
SPU Fastpass Wireless
24-7 - Windows 7 Pro x86
Admitting General - Windows 7 x86 - v1.7

通过将WIN输入到搜索框中,它将显示此。

Windows 7 Clinical Complete Nursing A3S
Windows 7 Clinical Complete Nursing A3S Wireless
Windows 7 Clinical Complete Nursing A4N
Windows 7 Clinical Complete Nursing A4N Wireless
Windows 7 Clinical Complete Nursing A4S
Windows 7 Clinical Complete Nursing A4S Wireless
Windows 7 Clinical Complete Observation
Windows 7 Clinical Complete Observation Wireless
24-7 - Windows 7 Pro x86
Admitting General - Windows 7 x86 - v1.7

..此行上方没有代码,仅文本文件内容以及搜索Win后应显示的内容。

$list = (Select-String -AllMatches -Path "x:ScriptsPowerShellHospDepartments.txt" -pattern $HospInput.Text | Select line | ft -HideTableHeaders | Out-String).Trim()
$separator = "`n`r"
$Array = @($list.split($separator,     [System.StringSplitOptions]::RemoveEmptyEntries))
$Array.Length
If ($list) 
{
$Array.trim()
$Array | foreach{$textbox1.Items.Add($_) }
}Else 
{
$TextBox1.Text = "Error in finding $($hospInput.Text)"
}

上面的代码是表单的一部分。它将根据输入搜索文本文件并匹配。这很棒。但是有时候。要以表格显示结果,我单击一个搜索按钮。当我单击搜索时,有时会显示结果。有时不是。每次测试时我都没有做任何不同的事情。

任何人都可以脱光灯吗?

它间歇性地进行

您不应该在此处使用Format-Table CMDLET,只需使用Select-Object CMDLET上的-expand开关即可检索您所需的输出:

$list = Select-String -AllMatches -Path "x:ScriptsPowerShellHospDepartments.txt" -pattern ($HospInput.Text) | Select -expand line

除此之外,您的问题可能与以下事实有关,即使用Regex Select-String cmdlet是,并且您可能会在搜索框中输入一些Regex字符吗?您可以通过将-SimpleMatch开关添加到CMDLET来更改此行为:

-simplematch

使用简单的匹配而不是正则表达式匹配。在一个 简单匹配,选择弦搜索输入 模式参数中的文本。它没有解释 模式参数作为正则表达式。


编辑:

您可以将代码重构为:

Select-String -AllMatches -Path "x:ScriptsPowerShellHospDepartments.txt" -pattern ($HospInput.Text) | 
    Select-Object -expand line | ForEach-Object {
        $textbox1.Items.Add($_)
    }

相关内容

  • 没有找到相关文章

最新更新