Конфликты запланированных задач Powershell? - PullRequest
2 голосов
/ 05 апреля 2011

Я запланировал запуск двух сценариев PowerShell в качестве задач на 00:00.

Этим утром я проверил журнал событий и обнаружил, что один из сценариев завершился ошибкой со следующим исключением:

Failure.Ошибка: «Не удалось создать запись в журнале:« C: \ Users \ SPSETU ~ 1 \ AppData \ Local \ Temp \ PowerShellLog.txt ».Ошибка была: «Процесс не может получить доступ к файлу« C: \ Users \ SPsetupAdmin \ AppData \ Local \ Temp \ PowerShellLog.txt », так как он используется другим процессом. '.'.

  • Может ли быть проблема, связанная с журналами? Оба сценария используют функцию записи журнала (см. poshcode.org ) и регистрируются в журнале событий Windows с одинаковымиЯ бы.
  • Вам известен какой-либо известный конфликт между сценариями powershell как запланированными задачами?
  • Нужно ли выполнять задачи по одному разу?

Ответы [ 2 ]

3 голосов
/ 05 апреля 2011

Итак, поскольку вы одновременно пытаетесь записать в один и тот же файл два разных процесса, вы можете ожидать вышеуказанную ошибку.

Powershell имеет те же ограничения, что и любое приложение или программа; в этом случае файл блокировки записи. Я не думаю, что существуют какие-либо «особые» ограничения для скриптов Powershell как запланированных задач.

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

2 голосов
/ 05 апреля 2011

Код poshcode.org регистрируется в файле PowerShellLog.txt, а также в журнале событий, поэтому оба ваших сценария пытаются записать в один и тот же файл. Если вы хотите записать только в журнал событий, вы можете попробовать удалить:

if ($Clobber) {
$msg | Out-File -FilePath $Path -Force
} else {
$msg | Out-File -FilePath $Path -Append
}

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

...