Не работает перерыв в скрипте powershell с хвостом Get-Content - PullRequest
0 голосов
/ 24 июня 2019

У меня есть bat-скрипт, который записывает в текстовый файл несколько строк.

set logfile=D:\my_job\out.txt
echo wwe >>%logfile%
echo wwe >>%logfile%
echo wwe >>%logfile%
echo wwe >>%logfile%
echo wwe >>%logfile%
echo wwe >>%logfile%
echo wwe >>%logfile%
echo wwe >>%logfile%
echo wwe >>%logfile%
echo wwe >>%logfile%
echo wwe >>%logfile%
echo wwe >>%logfile%
echo wwe >>%logfile%
echo wwe >>%logfile%
echo wwe >>%logfile%
echo wwe >>%logfile%
echo wwe >>%logfile%
echo wwe >>%logfile%
echo wwe >>%logfile%
echo wwe >>%logfile%
echo wwe >>%logfile%
echo wwe >>%logfile%
echo wwe >>%logfile%
echo wwe >>%logfile%
echo wwe >>%logfile%
echo wwe >>%logfile%
echo wwe >>%logfile%
echo wwe >>%logfile%
echo completed >>%logfile%
echo completeD >>%logfile%
echo wwe >>%logfile%
echo wwe >>%logfile%
echo wwe >>%logfile%
echo wwe >>%logfile%
echo wwe >>%logfile%
echo wwe >>%logfile%
echo wwe >>%logfile%
echo wwe >>%logfile%
echo ***Completed*** >>%logfile%
echo wwe >>%logfile%
echo wwe >>%logfile%

И у меня есть скрипт, чтобы остановить выполнение моей работы, если я вижу ***Completed***

Get-Content D:\my_job\out.txt –Wait | ForEach-Object {$_ ; if($_ -eq "***Completed***"){break} }

Но это не останавливает мою работу. Кроме того, я попробовал это:

Get-Content D:\my_job\out.txt –Wait | ForEach-Object {$_ ; if($_ -Match "***Completed***"){break} }

И в выводе я вижу:

parsing "***Completed***" - Quantifier {x,y} following nothing.
At C:\Users\jenkins\AppData\Local\Temp\jenkins4007901642048080451.ps1:1 char:138
+ ... t -Wait | ForEach-Object {$_ ; if($_ -Match "***Completed***"){break} ...
+                                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (:) [], ArgumentException
    + FullyQualifiedErrorId : System.ArgumentException

Можете ли вы помочь мне, пожалуйста, как я могу решить эту проблему?

1 Ответ

1 голос
/ 24 июня 2019

Эта команда добавит пробел в конце строки:

 echo ***Completed*** >>%logfile%

, поэтому проверка $_ -eq "***Completed***" не удастся.

Либо удалите пробел в echo, либо добавьте пробелв строке сравнения.

Относительно ошибки с -match: он работает с регулярными выражениями, а ***Completed*** является неправильным регулярным выражением из-за использования *.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...