0

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

$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.
4

1 回答 1

1

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

Select-String -pattern $SearchString

有了这个

Select-String -SimpleMatch "$SearchString"
于 2021-09-30T18:56:57.970 回答