Задача Windows schduler продолжает показывать 0x41301

14292
John John

Я написал следующий файл .ps1: -

[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true} $request = [System.Net.WebRequest]::Create("https://localhost/") $response = $request.GetResponse() $response.Close() 

и я поставил задачу в планировщике задач Windows Server 2012 r2, чтобы вызвать te выше файла ps1. Теперь я запускаю эту задачу вручную, но она продолжает показывать «0x41301», что означает, что она все еще выполняется ... хотя, если я непосредственно запускаю Приведенный выше код внутри окна PowerShell закончится менее чем за секунду? так почему вызов этого ps1 с помощью задачи Шулера никогда не закончится?

Редактировать - вот экспортированный XML:

<?xml version="1.0" encoding="UTF-16"?> <Task version="1.4" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task"> <RegistrationInfo> <Date>2016-02-09T00:35:11.5514762</Date> <Author>ad-services\user.service</Author> </RegistrationInfo> <Triggers> <CalendarTrigger> <Repetition> <Interval>PT5M</Interval> <Duration>PT30M</Duration> <StopAtDurationEnd>false</StopAtDurationEnd> </Repetition> <StartBoundary>2016-02-09T19:30:01</StartBoundary> <Enabled>true</Enabled> <ScheduleByDay> <DaysInterval>1</DaysInterval> </ScheduleByDay> </CalendarTrigger> </Triggers> <Principals> <Principal id="Author"> <UserId>S-1-5-20</UserId> <RunLevel>HighestAvailable</RunLevel> </Principal> </Principals> <Settings> <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy> <DisallowStartIfOnBatteries>true</DisallowStartIfOnBatteries> <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries> <AllowHardTerminate>true</AllowHardTerminate> <StartWhenAvailable>false</StartWhenAvailable> <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable> <IdleSettings> <StopOnIdleEnd>true</StopOnIdleEnd> <RestartOnIdle>false</RestartOnIdle> </IdleSettings> <AllowStartOnDemand>true</AllowStartOnDemand> <Enabled>true</Enabled> <Hidden>false</Hidden> <RunOnlyIfIdle>false</RunOnlyIfIdle> <DisallowStartOnRemoteAppSession>false</DisallowStartOnRemoteAppSession> <UseUnifiedSchedulingEngine>false</UseUnifiedSchedulingEngine> <WakeToRun>false</WakeToRun> <ExecutionTimeLimit>P3D</ExecutionTimeLimit> <Priority>7</Priority> </Settings> <Actions Context="Author"> <Exec> <Command>C:\Users\user.service\Documents\AppPoolActivation.ps1</Command> </Exec> </Actions> </Task> 
4
Вы можете включить, чтобы задача всегда заканчивалась через x минут, часов, дней и т. Д. Действительно ли проблема - убить задачу таким образом? Я видел это до того, как сценарий завершается, но процесс по какой-то причине остается активным. LPChip 8 лет назад 1
Можете ли вы опубликовать экспортированный XML из вашей Задачи, чтобы мы могли точно видеть, как вы его настраиваете? Ƭᴇcʜιᴇ007 8 лет назад 1
@ LPChip Я не понял твою точку зрения, что не так с моим сценарием? John John 8 лет назад 0
@ Ƭᴇcʜιᴇ007 Я редактирую свой вопрос с помощью сгенерированного XML .. не могли бы вы проверить? Спасибо John John 8 лет назад 0
@JohnJohn Моя точка зрения такова, что ваш сценарий может быть в порядке и работать до завершения, но процесс все еще остается активным, и это не позволяет запланированной задаче нормально останавливаться. LPChip 8 лет назад 0

3 ответа на вопрос

8
Ƭᴇcʜιᴇ007

Я считаю, что это показывает проблему:

 <Actions Context="Author"> <Exec> <Command>C:\Users\user.service\Documents\AppPoolActivation.ps1</Command> </Exec> </Actions> 

Вы не должны просто помещать скрипт .PS1 в качестве команды, которую вы хотите выполнить, это приведет к ее сбою или выполнению странных вещей. :)

Вместо этого в Задаче измените «Программу / скрипт», которую вы хотите запустить:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe 

Добавьте сценарий через поле «Аргументы» задачи, а также включите изменения политики выполнения (при необходимости). то есть:

-ExecutionPolicy Bypass -file "C:\Users\user.service\Documents\AppPoolActivation.ps1" 

Вы также можете изменить «Start» в поле, чтобы соответствовать пути, что сценарий существует в, а именно: C:\Users\user.service\Documents\.

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

Я следую вашим шагам и теперь у меня последний запуск показывает 0x1? John John 8 лет назад 0
@JohnJohn 0x1 означает успех, если я не ошибаюсь. LPChip 8 лет назад 0
@ Techie007 теперь единственный подход, который работает в моем случае, это то, что я создаю файл .bat, который вызывает файл .pst, затем внутри планировщика задач я указываю путь к файлу .bat внутри «Программы / сценария». .. John John 8 лет назад 0
@LPChip 0x0 - УСПЕХ. Любое ненулевое возвращаемое значение * обычно * означает ошибку. Dan 7 лет назад 1
0
user881879

Или просто на вкладке «Действие» заполните программу / скрипт: дополнения powershell (необязательно): -NonInteractive -file «C: \ yourscript.ps1»

-1
Kyle

У меня была эта проблема, так как у меня была задана задача «запускать, вошел ли пользователь в систему или нет». Когда я переключил ее на «Запускать только когда пользователь вошел в систему» ​​и протестировал ее, я понял, что у меня была ПАУЗА в одном из них. из моих командных файлов, которые я забыл удалить!

Я знаю, что это, вероятно, не связано, но, надеюсь, это поможет кому-то в будущем!

Рецензенты VLQ: Это законная попытка ответить на вопрос. Команда `pause` действительно выдаст код состояния задачи, о котором сообщает OP. Twisty Impersonator 6 лет назад 1
Это тоже решит мою проблему sam 5 лет назад 0