Powershell Select 属性 变量为

Powershell Select property with a variable as

以下脚本在 SSIS 中搜索删除语句。这些删除语句来自 sql 缓存,出于某种原因,它们返回时缺少“]”。这个缺少的大括号导致我的 select 对象失败,请参见下面的错误。我不能在搜索之前删除大括号,否则它将找不到匹配项,但保留它会导致 selection 出现问题。有没有办法在 select 对象期间忽略这些大括号。如果删除没有任何大括号,脚本会非常有效。

$SearchStrings = Get-Content "C:\Users\someuser\Desktop\DataDumps_PS\Delete_input.txt"
$out_file = "C:\Users\someuser\Desktop\DataDumps_PS\Deletes$(get-date -f yyyyMMdd).txt"

$RootString = "E:\SSIS_packages\"
Foreach($SearchString in $SearchStrings){
Write-host $SearchString
                                        
Get-ChildItem $RootString -recurse | Select-String -pattern $SearchString | group path | 
Select-Object name,@{name="SearchString";expression={$SearchString.replace('[','').replace(']','')}}  | Export-Csv $out_file - 
append -NoTypeInformation -Force #select name, "$SearchString"
}

缺少大括号的删除错误。

Select-String : The string DELETE FROM [dbo].[APP_DMEVS_STG is not a valid regular 
expression: parsing "DELETE FROM [dbo].[APP_DMEVS_STG" - Unterminated [] set.

听起来它无法将其解释为正则表达式。尝试替换这个

Select-String -pattern $SearchString

有了这个

Select-String -SimpleMatch "$SearchString"