簡體   English   中英

PowerShell 腳本將手動運行,但不會按計划任務運行

[英]PowerShell script will run manually but not as scheduled task

以前有人問過這個問題,但沒有一個答案對我有用。 我已經嘗試了在這個論壇和其他任何地方提出的所有建議,但沒有任何效果。

環境:Windows 10 工作站。 這不是從服務器上傳的,而是從工作站上傳的,因為我必須每天手動更新文件。 在我們啟動並運行新系統之前,這也是一個臨時解決方案。

問題:我有一個 Powershell 腳本,手動啟動時可以正常運行,但是,當我嘗試通過任務計划程序啟動它時,TS 顯示上次運行結果“操作成功完成(0x0)”但文件未上傳. 現在,當我手動運行腳本時,Powershell window 將在腳本運行時打開,但屏幕上沒有任何顯示,然后當腳本完成運行時,window 將關閉。 當任務計划程序運行腳本時,這個 window 沒有出現 - 讓我相信 TS 並沒有真正運行腳本。

我試過的:

  • 更改運行任務的用戶帳戶的名稱(我自己、SYSTEM、LOCAL SERVICE*)
  • 從 C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe 和 C:\Windows\SysWOWshell.exe 運行 Powershell
  • -ExecutionPolicy Bypass添加到 arguments 框
  • 將完整路徑添加到“開始於”框中
  • 將其創建為基本任務並且只是任務
  • 坐在曲速引擎上照顧它們,盡管它是一個無用和不體面的 position

我為我的任務添加了 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 腳本更改為指向該文件的副本,它就起作用了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM