我编写了一个脚本,目的是根据' @ command = N'
过滤我从服务器上抓取的不同作业$orginal_submap = 'C:\Users\Desktop\Jobs_from_Server\Jobs_Orgineel_opdr_2.3'
$orginal_rejected = 'C:\Users\Desktop\Jobs_from_Server\Jobs_Orgineel_opdr_2.3\gefaald'
$fileserver = Get-ChildItem $orginal_submap *.sql
$stringfile = '@command=N''/FILE*'
$stringisserver = '@command=N''/ISSERVER*'
$commandline = '@command=N'
$startloop = 1
foreach ($fileser in $fileserver)
{
$currentline = Select-String $fileser -pattern $commandline
#countss how often the @command is containded in the file
$numberoftimesloopd = $currentline.length
do
{
if ($startloop -gt $numberoftimesloopd) {break}
foreach ($commandline in $currentline)
{
$startloop
if ($commandline -match $stringfile) {'@command=N''/FILE'}
elseif ($commandline -match $stringisserver) {'@command=N''/ISSERVER'}
else {'gefaald'}
#if the amount of loops is equel to the number of '@command=N' it stops the loop
$startloop++
if ($startloop -gt $numberoftimesloopd) {break}
}
} while ($startloop-le $numberoftimesloopd)
einde
}
我的问题是,不是在运行作业后退出,或者只是从源映射中获取下一个* sql文件,而是出现错误,即
它说错误是在$ currentline = Select-String $ fileser -pattern $ commandline
问题是我多次查看并尝试不同的操作,例如添加启动循环以阻止程序继续运行脚本。
有人可以帮助解决错误,并确保如果所有文件都已完成,脚本将退出,如果没有从源中接受下一个作业。
或帮我查明问题的根源/可能的解决方案
答案 0 :(得分:1)
在以下行中,您应该使用-SimpleMatch参数,因此Select-String
不会将Pattern参数的值解释为正则表达式语句:
$currentline = Select-String $fileser -pattern $commandline -SimpleMatch