#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;
и встроенных кавычек команда будет работать только в том случае, если путь к сценарию не содержит пробелов; то же самое для выходного пути.