PowerShell 脚本将手动运行,但不会按计划任务运行

问题描述 投票:0回答:2

这个问题以前曾被问过,但没有一个答案对我有用。 我已经尝试了这个论坛和其他地方建议的所有方法,但没有任何效果。

环境:Windows 10 工作站。 这不是从服务器上传,而是从工作站上传,因为我必须每天手动更新文件。 这也是一个临时解决方案,直到我们让新系统启动并运行为止。

问题:我有一个 Powershell 脚本,手动启动时可以正常运行,但是,当我尝试通过任务计划程序启动它时,TS 说上次运行结果“操作成功完成 (0x0)”,但文件没有已上传。 现在,当我手动运行脚本时,在脚本运行时将打开一个 Powershell 窗口,但屏幕上没有显示任何内容,然后当脚本运行完成时,该窗口将关闭。 当任务计划程序运行脚本时,不会出现此窗口 - 让我相信 TS 并未真正运行脚本。

我尝试过的:

  • 更改运行任务的用户帐户名称(我自己、SYSTEM、LOCAL SERVICE*)
  • 从 C:\Windows\System32\WindowsPowerShell 1.0\powershell.exe 和 C:\Windows\SysWOW64\WindowsPowerShell 1.0\powershell.exe 运行 Powershell
  • -ExecutionPolicy Bypass 添加到参数框
  • 将完整路径添加到“开始于”框中
  • 将其创建为基本任务并且只是任务
  • 坐在曲速引擎上并照顾它们,尽管这是一个无用且有损尊严的位置

我包含了我的任务的 XML 代码,以防有人看到我可能遗漏的内容。

<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.4" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
  <RegistrationInfo>
    <Date>2021-04-16T13:34:17.5511135</Date>
    <Author>(redacted)</Author>
    <URI>\Nightly Update Staff</URI>
  </RegistrationInfo>
  <Triggers>
    <CalendarTrigger>
      <StartBoundary>2021-04-16T17:05:00</StartBoundary>
      <ExecutionTimeLimit>PT30M</ExecutionTimeLimit>
      <Enabled>true</Enabled>
      <ScheduleByWeek>
        <DaysOfWeek>
          <Monday />
          <Tuesday />
          <Wednesday />
          <Thursday />
          <Friday />
        </DaysOfWeek>
        <WeeksInterval>1</WeeksInterval>
      </ScheduleByWeek>
    </CalendarTrigger>
  </Triggers>
  <Principals>
    <Principal id="Author">
      <UserId>S-1-5-19</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>true</UseUnifiedSchedulingEngine>
    <WakeToRun>false</WakeToRun>
    <ExecutionTimeLimit>PT1H</ExecutionTimeLimit>
    <Priority>7</Priority>
  </Settings>
  <Actions Context="Author">
    <Exec>
      <Command>C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe</Command>
      <Arguments>-ExecutionPolicy Bypass C:\StaffUpload.ps1</Arguments>
      <WorkingDirectory>C:\Users\%username%\Desktop</WorkingDirectory>
    </Exec>
  </Actions>
</Task>

我希望我已经提供了足够的信息,让别人知道我可能做错了什么。

*注意 - 本地系统给了我一个目录未找到错误

powershell windows-10 scheduled-tasks
2个回答
0
投票

我想通了。 任务计划程序不喜欢将要传输的文件存储在非本地计算机上的驱动器上。 一旦我将文件复制到本地目录,更改 PowerShell 脚本以指向该文件的副本,它就起作用了。


0
投票

我也有同样的问题。

但是我的脚本/任务运行了 10 天都很好。

然后就停了。

我的脚本位于本地 DIR 中。

任务/脚本每 5 分钟运行一次。 设置为“系统”运行 “每天中午12点30分,冷冻后,每5分钟无限重复一次”

再次,它运行得很好,直到昨天它停止运行脚本。 从脚本创建的日志文件来看,它上次运行的时间似乎是 12:30,这也是它的开始时间:

如果我右键单击任务计划程序中的任务并选择“运行”,它就可以工作。

每次触发 TS 日志时都说它有效,但我观察了进程并且自动完成时没有 powershell.exe 运行,但如果手动运行则有。

这是 TS xml:

© www.soinside.com 2019 - 2024. All rights reserved.