我正在努力自动从网站下载文件,在触发下载时打开新选项卡,并在主窗口中出现Save / Open / Close提示之前关闭它。手动启动时脚本本身工作正常,直到我在任务计划程序中尝试它。它运行良好,直到它下载。我已经包含了一个代码来捕获需要下载的文件的URL,然后将其传递给Invoke-WebRequest
,它可以在PowerShell ISE中正常工作,但在从任务计划程序启动时不会返回任何结果。我已经将计数器和测试文件创建包含在代码中,以查看do-while的内容是否完全执行,并且记录了所有10次尝试。它是搜索通过任务计划程序启动时未返回结果的活动URL的部分。
# >> 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控制台窗口在通过任务计划程序启动时正在重点关注。该任务设置为使用参数执行powershell.exe:C:\userfolder\CPdownload.ps1 -RunType $true
, - 并开始于:C:\userfolder
。运行:仅当用户登录并具有最高权限时;为Windows Server 2012 R2配置。
我还尝试通过任务计划程序中的批处理文件启动shell脚本,结果完全相同。
提前感谢任何指示。
答案 0 :(得分:0)
您的任务可能需要以交互模式运行。默认情况下,计划任务在会话0中运行。您可以使用/ IT参数为交互模式计划任务。请查看以下链接以获取更多信息
https://msdn.microsoft.com/en-us/library/bb736357(VS.85).aspx
答案 1 :(得分:0)
旧文章,但是,除了将脚本更改为交互模式(此问题已解决)之外,如果希望在交互模式之外运行脚本,还可以将Powershell执行策略更改为不受限制(Set-ExecutionPolicy -ExecutionPolicy不受限制)。只是以为我自己最近会发贴。