我正在为从网站自动下载文件而苦苦挣扎,当下载被触发时,它会打开一个新的标签,并在主窗口中出现保存/打开/关闭提示之前关闭它。脚本本身在手动启动时运行良好,直到我在Task Scheduler中尝试它。它运行得很好,直到它在下载时遇到问题。我已经包含了一段代码来捕获需要下载的文件的网址,然后将其传递给Invoke-WebRequest,它在PowerShell ISE中工作得很好,但从任务调度器启动时不返回任何结果。我已经在代码中包含了计数器和测试文件创建,以查看do-while的内容是否执行,并且记录了所有10次尝试。它是搜索活动URL的一部分,当通过Task Scheduler启动时不会返回结果。
# >> Keep trying to capture the CSV download link
$i = 1
Do {
$i | Add-Content -Path "C:\userfolder\try.txt"
$urls = (New-Object -ComObject Shell.Application).Windows() |
Where-Object {$_.LocationUrl -like "https://sitename.com/ReportViewer*"} |
Where-Object {$_.LocationUrl}
$reportURL = @($urls)[0].LocationURL
$i ++
}
While ($reportURL -eq $NULL -and $i -le 10)
# >> Send download link to web request and save to file
Invoke-WebRequest -Uri $reportURL -OutFile "C:\userfolder\ProfileList.csv"我以前试过Wscript.Shell AppActivate and SendKeys('%S'),但AppActivate不能工作,可能是因为PowerShell控制台窗口在通过任务调度器启动时劫持了焦点。该任务被设置为使用参数:C:\userfolder\CPdownload.ps1 -RunType $true执行powershell.exe,并从:C:\userfolder开始。运行:仅当用户已登录且具有最高权限时;为Windows Server 2012 R2配置。
我还尝试通过批处理文件从Task Scheduler启动shell脚本,结果完全相同。
提前感谢您的指点。
发布于 2016-12-15 04:27:41
可能你的任务需要在交互模式下运行。默认情况下,计划任务在会话0中运行。您可以通过/IT参数来调度交互模式的任务。有关更多信息,请查看以下链接
https://msdn.microsoft.com/en-us/library/bb736357(VS.85).aspx
发布于 2020-07-28 02:29:50
然而,除了将脚本更改为交互模式(这会修复它)之外,如果您希望在交互模式之外运行脚本,还可以将Powershell执行策略更改为无限制(设置-执行策略-ExecutionPolicy无限制)。我想我最近也遇到了这个问题。
https://stackoverflow.com/questions/41150976
复制相似问题