2016-12-14 153 views
0

我很努力从网站自动下载文件,当下载被触发时打开一个新标签,并在主要的保存/打开/关闭提示出现之前关闭它窗口。手动启动后脚本本身工作得很好,直到我在Task Scheduler中尝试它。它运行良好,直到它下载。我已经包含了一个代码来捕获需要下载的文件的URL,然后将它传递到Invoke-WebRequest,它可以在PowerShell ISE中正常工作,但从Task Scheduler启动时不会返回任何结果。我已经将计数器和测试文件创建包括在代码中,以查看do-while的内容是否全部执行,并且记录了所有10次尝试。它是通过活动URL进行搜索的部分,当通过任务计划程序启动时,这些URL不返回结果。Windows任务计划程序Powershell获取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')之前,但因为当通过任务计划推出的PowerShell控制台窗口中hijakcing焦点则AppActivate不会大概工作。该任务被设置为使用参数执行powershell.exe:C:\userfolder\CPdownload.ps1 -RunType $true,以及开始于:C:\userfolder。运行:仅在用户登录时拥有最高权限;为Windows Server 2012 R2配置。

我也尝试通过任务计划程序中的批处理文件启动shell脚本,其结果完全相同。

在此先感谢任何指针。

回答

相关问题