powershell无需用户输入即可从网站下载

时间:2016-09-08 15:02:39

标签: powershell

我需要每小时从网站下载一个文件。现在我有......

    $url = "https://www.misoenergy.org/ria/Consolidated.aspx?format=csv" 
    $path = "C:\MISO.csv" 
   # param([string]$url, [string]$path) 

    if(!(Split-Path -parent $path) -or !(Test-Path -pathType Container (Split-Path -parent $path))) { 
      $path = Join-Path $pwd (Split-Path -leaf $path) 
    } 

    "Downloading [$url]`nSaving at [$path]" 
    $client = new-object System.Net.WebClient 
    $client.DownloadFile($url, $path) 
    #$client.DownloadData($url, $path) 

    $path
    PAUSE

这是从网站获得响应并提示我打开或保存文件。我只想要它保存文件。谢谢你的帮助。

3 个答案:

答案 0 :(得分:1)

试试这个:

$url = "https://www.misoenergy.org/ria/Consolidated.aspx?format=csv"
$data = Invoke-WebRequest -Uri $url
$path = "C:\MISO.csv"
$data.content | Out-file $path

当然没有错误处理或检查。它假定Invoke-WebRequest已成功完成,您的端点 返回原始CSV数据。

答案 1 :(得分:0)

在我看来使用wget。 以下适用于我。

 $url = "https://www.misoenergy.org/ria/Consolidated.aspx?format=csv" 
 $path = "d:\my_cs_folder\MISO.csv" 
 wget -OutFile $path -Uri $url

我删除了可读性检查。目标文件路径也已更改。请注意,您可能会收到拒绝将您的文件放在系统驱动器根目录的权限。

答案 2 :(得分:0)

我已经尝试过类似的事情了一段时间并且它非常烦人,因为大多数情况都无法正常工作并且向按钮发送按键需要窗口处于活动状态,至少对于我可以看到。 由于这个原因,如果计算机被使用它将无法工作,我仍然需要找到一种方法,但直到现在我已经让它像这样工作。

$IE = New-Object -ComObject InternetExplorer.Application
$IE.Visible = $true
$IE.Navigate($url)
$IEProc = Get-Process | Where-Object {$_.MainWindowHandle -eq $IE.HWND}
$WS = New-Object -ComObject WScript.Shell
$WS.AppActivate($IEProc.id)
Start-Sleep 2
[Windows.Forms.SendKeys]::SendWait('%{s}') 

我意识到它非常难看,但它确实起作用了:(