Несколько сценариев PowerShell сбой одновременно с использованием таймера - PullRequest
0 голосов
/ 08 ноября 2018

У меня есть 3 независимых скрипта PowerShell, каждый из которых вызывается отдельно, и все они делают очень похожие вещи. В каждом из них установлен таймер для проверки файлов CVS каждые 5 минут и отображения результатов в виде значка на панели задач в Windows. Они запрашивают разные CSV-файлы, но макет такой же, как показано ниже:

//setup my variables
$poll_timer = New-Object System.Timers.Timer($poll_interval * 1000 * 60)
$poll_timer.Start()

function check_CSV{
    query the CSV
    $Icon.Icon = $whichImage
...
} 
$poll = {
    check_CSV
} 
Register-ObjectEvent $poll_timer -EventName Elapsed -Action $poll 

Все работает хорошо, и они работают весь день. Однако 2 или 3 раза в неделю они терпят крах, поэтому опрос прекращается. Что я нахожу странным, так это то, что все 3 аварийно завершают работу. Powershell по-прежнему работает, если я запускаю другой скрипт, но эти 3, которые вызываются независимо, все вылетают в одно и то же время.

Я поместил $ ErrorActionPreference = "silentlycontinue" вверху, и это, похоже, не имеет никакого значения. Я не понимаю, почему они терпят крах, иногда кажется, что они зависают во время проверки CSV.

Заранее спасибо.

1 Ответ

0 голосов
/ 06 декабря 2018

В конце концов, я полагаю, что это произошло из-за независимых скриптов Powershell, использующих одинаковые имена таймеров. Так я использовал например:

Register-ObjectEvent $poll_timer_script1 -EventName Elapsed -Action $poll_script1 
Register-ObjectEvent $poll_timer_script2 -EventName Elapsed -Action $poll_script2 

Я не совсем понимаю, почему это помогло бы, поскольку они представляют собой отдельные сценарии в отдельных файлах, вызываемых независимо, но через пару недель у меня не было сбоя, который почти наверняка произошел бы сейчас.

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