O programa de tarefas do Windows continua mostrando 0x41301

4

Eu escrevi o seguinte arquivo .ps1: -

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

e eu defini uma tarefa dentro do agendador de tarefas windows server 2012 r2, para chamar te acima de arquivo ps1.agora eu executo essa tarefa manualmente, mas ela continua mostrando "0x41301" o que significa que ainda está em execução ... embora se eu executar diretamente o código acima dentro da janela do PowerShell, ele terminará em menos de um segundo? então por que chamar esse ps1 usando a tarefa Schuler nunca terminará?

- Editar-- aqui está o XML exportado: -

<?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>
    
por John John 08.02.2016 / 18:36

3 respostas

7

Eu acredito que isso mostra o problema:

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

Você não deve simplesmente colocar um script .PS1 como o comando que deseja executar, ele fará com que ele falhe ou faça coisas estranhas. :)

Em vez disso, na Tarefa, altere o "Programa / script" para o qual você deseja executar:

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

Adicione o script através do campo "Argumentos" da tarefa, bem como inclua alterações na Política de Execução (se necessário). ou seja:

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

Você também pode querer alterar o campo "Iniciar em" para corresponder ao caminho em que o script existe, por exemplo, C:\Users\user.service\Documents\ .

Recomenda-se não armazenar o script na pasta do perfil de um usuário, pois isso pode causar problemas de acesso. Em vez disso, crie uma pasta (fora da pasta Users ) para manter seu (s) script (s) e certifique-se de que a conta de usuário usada para executar a tarefa tenha acesso apropriado.

    
por 09.02.2016 / 15:24
0

Ou simplesmente no preenchimento da guia "Ação" Programa / script: powershell Addarguments (opcional): -NonInteractive -file "C: \ yourscript.ps1"

    
por 13.03.2018 / 10:33
-1

Eu tive este problema porque eu tinha a tarefa definida para "executar se o usuário está logado ou não" .. Quando eu mudei para "Executar somente quando o usuário está logado" e testado, percebi que eu tinha um PAUSA em um dos meus arquivos em lote que eu esqueci de remover!

Eu sei que isso provavelmente não está relacionado, mas espero que ajude alguém no futuro!

    
por 27.11.2017 / 16:01