Файл журнала, не генерируемый при запуске сценария powershell с планировщиком задач Windows

#powershell

#powershell

Вопрос:

Я создал следующий сценарий powershell:

 stop-service ''3456''

start-sleep -s 60

stop-service "2354"

start-sleep -s 60

Restart-computer QY34 -Force

send -mailmessage -from operating.system@abc.com -To asdf@abc.com -subject test -attachment 'c:Temp|test.log' -smtp server "127.0.0.1"
  

Я ввел следующую информацию в планировщик задач Windows

На вкладке Действия;

C:windowsSystem32windowspowershellv1.0powershell.exe

Вкладка Аргументы:

-файл «c:scriptstest.ps1 «*>»c:Temptest.log «

Кто-нибудь, пожалуйста, может помочь мне получить файл журнала при запуске скрипта через планировщик задач?

Комментарии:

1. вы пробовали запускать именно эту строку с консоли… скорее всего, вся строка, которую выполнит планировщик задач, не соответствует тому, что вы думаете. [ усмешка ]

Ответ №1:

Измените аргументы с

 -file "c:scriptstest.ps1"*>"c:Temptest.log"
  

Для

  "c:scriptstest.ps1" *> "c:Temptest.log"
  

и это должно работать так, как ожидалось. Обратите внимание на пробелы до и после *>.

Я думаю, проблема в том, что Powershell будет считывать все после file в качестве входных данных файла. Он все равно будет работать, но поскольку он просто прекращает чтение после бита «file», оператор > игнорируется / не отображается. При удалении файла Powershell все равно найдет сценарий, используя позиционные параметры, но он также обработает оператор > и выведет в файл.

Если вы запустите if из командной строки, это сработает, я думаю, потому что cmd.exe в этом случае выходные данные будут обрабатываться вместо Powershell, но не цитируйте меня по этому поводу.

Комментарии:

1. Вы правы, но стоит отметить, что это -file подразумевает -command (в Windows PowerShell; в ядре PowerShell -file теперь используется значение по умолчанию). Без использования amp; и встроенных кавычек команда будет работать только в том случае, если путь к сценарию не содержит пробелов; то же самое для выходного пути.