foreachloop Powershell中的foreachloop错误

时间:2016-10-12 11:22:11

标签: powershell

我编写了一个脚本,目的是根据' @ 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文件,而是出现错误,即

enter image description here

它说错误是在$ currentline = Select-String $ fileser -pattern $ commandline

问题是我多次查看并尝试不同的操作,例如添加启动循环以阻止程序继续运行脚本。

有人可以帮助解决错误,并确保如果所有文件都已完成,脚本将退出,如果没有从源中接受下一个作业。

或帮我查明问题的根源/可能的解决方案

1 个答案:

答案 0 :(得分:1)

在以下行中,您应该使用-SimpleMatch参数,因此Select-String不会将Pattern参数的值解释为正则表达式语句:

$currentline = Select-String $fileser -pattern $commandline -SimpleMatch