使用Bits-Transfer的PowerShell脚本不能用作计划任务

我尝试过使用其他Q / A,如Windows Server 2008 R2 PowerShell脚本手动运行,但不是作为计划任务,但无济于事。

基本上我有一个PoSh脚本(显然这是它现在的热门缩写),从一台服务器(UNCpath)复制大量的大文件到本地驱动器。 它在一个循环中完成,它使用BITS传输 。 大致:

  1. Start-BitsTransfer源/目标/asynchronous/低优先级
  2. while位工作的状态仍然是“连接”或“转移”, Sleep 2秒(即等待它完成)
  3. 一旦我们不在这个循环中, Complete-BitsTransfer
  4. Write-Host一个“完成的文件X”味精
  5. 得到下一个文件,重复…(所以是的,有一个从Get-ChildItem获得的文件列表的外部循环

从PoSh ISE和普通的PoSh控制台运行时,该脚本可以正常工作。

我试过使用SleepStart-Sleep ,甚至[Threading.Thread]::Sleep ,认为这是问题。 然后,我将.ps1包装在.bat ,从CMD运行时也可以。 但在所有情况下,无论是直接调用.ps1还是包装器.bat ,调度任务都会失败。

说它是成功的,但实际发生的是启动所有传输作业,它们进入“暂停”状态(由PoSh窗口中的Get-BitsTransfer显示),任务认为一切正常并结束,留下这些孤立的BITS工作,我甚Complete-BitsTransfer不能Complete-BitsTransfer的B / C他们也抛出了错误。

其他行为:

  • 以上是当我运行它作为我的域pipe理员帐户,让它存储pwd瓦特/任务时发生了什么。
  • 如果我将其更改为一个服务帐户(这是一个pipe理员),它实际上从来不会启动 BITS作业。 它也会抛出“用户必须拥有”作为批处理作业权限login的错误。
  • 如果我尝试让它作为本地/内置帐户运行,它也无法启动BITS作业。

把我的头发撕在这里帮忙!

根据MS,计划任务必须在交互式login下运行。

https://msdn.microsoft.com/en-us/library/windows/desktop/ee663885(v=vs.85).aspx