Windows 任务调度程序持续显示 0x41301

Windows 任务调度程序持续显示 0x41301

我已经编写了以下.ps1 文件:-

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

我在 Windows Server 2012 R2 任务计划程序中设置了一个任务,以调用上面的 ps1 文件。现在我手动运行此任务,但它一直显示“0x41301”,这意味着它仍在运行...虽然如果我直接在 PowerShell 窗口内运行上述代码,它将在不到一秒的时间内结束?那么为什么使用任务 Schuler 调用这个 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>

答案1

我认为这说明了问题:

  <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"

您可能还想更改“开始于”字段以匹配脚本存在的路径,即:C:\Users\user.service\Documents\

建议不要将脚本存储在用户的配置文件文件夹中,因为这可能会导致访问问题。相反,请在文件夹外创建一个文件夹Users来保存脚本,并确保用于运行任务的用户帐户具有适当的访问权限。

答案2

我遇到这个问题是因为我已将任务设置为“无论用户是否登录都运行”..当我将其切换为“仅在用户登录时运行”并进行测试时,我意识到我的一个批处理文件中有一个暂停,我忘记删除它了!

我知道这可能不相关但希望它能在未来帮助到某人!

答案3

或者简单地在“操作”选项卡中填写程序/脚本:电源外壳 添加参数(可选):非交互式文件“C:\你的脚本.ps1”

相关内容