Запланированный сценарий Powershell иногда умирает в середине

У меня есть несколько запланированных сценариев PowerShell, и они обычно отлично работают (как запланированная задача, так и при запуске вручную)

У меня возникает проблема, когда иногда, они просто перестают работать на середине сценария.

Один из моих сценариев выглядит так:

start-transcript
write-host "Starting!"
foreach($blah in $blahblah)
{
   write-host "    $blah"
}
write-host "Finished"
stop-transcript

Что странно, когда я смотрю на стенограмму, я вижу этот шаблон:

**********************
Windows PowerShell transcript start
Start time: 20170116055439
Username  : domain\user 
Machine   : PCNAME (Microsoft Windows NT 6.1.7601 Service Pack 1) 
**********************
Transcript started, output file is GetMSOLLicensestoCSVTranscript.txt
Starting!
    blahitem1
    blahitem2
    ...
    blahitem 37675
**********************
Windows PowerShell transcript end
End time: 20170116060001
**********************   

Обратите внимание, что он просто остановился в середине цикла (это не было сделано с все данные) и обратите внимание, что узел записи "Finished" никогда не был вызван.

Что мне показалось интересным, так это то, что PowerShell каким-то образом закрыл файл стенограммы и записал последние 4 строки.

Я наполовину предполагаю, что у него заканчивается память, но не знаю, как определить, что происходит на самом деле.

Мы будем благодарны за любые советы по устранению неполадок.

0
задан 16 January 2017 в 19:19
2 ответа

Ok, deci răspunsul (jenant) a fost că a fost o greșeală din partea mea.

În programatorul de activități Windows, există mai multe locuri în care puteți seta o limită de timp - Un ansamblu care se află în setul principal de file, dar apoi puteți seta și o limită de timp pentru fiecare sarcină pe care o specificați.

Când am configurat sarcina programată pentru a rula scriptul zilnic, l-am setat să ruleze timp de maximum 1 oră.

Deci, în timp ce combinația generală a tuturor sarcinilor ar putea dura până la 4 ore, subtask-ul specific care a lansat PowerShell a fost limitat la o oră.

Am ratat acest lucru când am verificat și am văzut setarea de 4 ore.

  • Jack
0
ответ дан 5 December 2019 в 08:44

Является ли код внутри цикла чистым Powershell или вызовом someCrazy.exe ? Некоторые сумасшедшие exe пишут на консоль вместо стандартного вывода, и такая ошибка не будет зафиксирована расшифровкой. Вы можете попробовать обернуть PowerShell CMD, который может фиксировать такой текст ошибки.

CMD.EXE /C "powershell -file c:\your\script.ps1" 2>&1 > c:\temp\cmdWrapper.log

Re: отсутствует слово «завершено». Стоп-стенограмма - это один из способов завершить расшифровку. Вероятно, ошибка в цикле вызывает завершение работы PowerShell. Расшифровка стенограммы будет остановлена ​​обычным сообщением о закрытии, когда завершится powershell.exe , созданный планировщиком задач.

0
ответ дан 5 December 2019 в 08:44

Теги

Похожие вопросы