下载文件表单动态URL

时间:2016-05-12 10:58:11

标签: file powershell url dynamic download

尝试使用PowerShell脚本下载文件时遇到问题:

问题是文件的名称会动态更改,因此我不确定如何定义网址路径。

例如,我想从" http://definitions.symantec.com/defs/jdb/ FILE_NAME "下载文件,但是文件的名称(例如," 2wer123.jdb")每天都在变化。

接下来,您可以看到我目前正在处理的脚本。但是,我不知道如何实现解决动态名称的解决方案。

$source = "http://definitions.symantec.com/defs/jdb/*.jdb";
$dest = "F:\Program Files (x86)\xXXXXXx\xXXXXXx\xXXXx\xXXx\content\incoming\virus_def.jdb";
$secPasswd = ConvertTo-SecureString "adfasfdasfl" -AsPlainText -Force
$myCreds = New-Object System.Management.Automation.PSCredential -ArgumentList "sadfas.sdafasf.sfdasdfaf.sfs.sdfs\Administrator", $secPasswd
$Test = Invoke-WebRequest -Uri $source -OutFile $dest -Proxy 'http:\\sdfs.sdfs.sadfsa:8080' -ProxyCredential $mycreds

2 个答案:

答案 0 :(得分:1)

您的脚本无法正常工作,因为您无法通过HTTP使用通配符。 你可以做的是找到一个包含最新文件链接的页面,例如: https://www.symantec.com/security_response/definitions/download/detail.jsp?gid=sep

从那以后,我可以想到两种获取文件名的方法:

  1. 下载页面并解析是获取链接
  2. 在该页面上,有指向同一文件的FTP链接。您可以通过FTP下载文件,或者至少列出文件并获取文件名。

答案 1 :(得分:1)

要获取该链接,您需要解析来自this page的当前定义链接,例如Andrey Marchuk suggests

$path = "https://www.symantec.com/security_response/definitions/download/detail.jsp?gid=sep"
$definitionPath = (Invoke-WebRequest $path).Links |
    Where-Object{$_.InnerText -like "*.jdb" -and $_.InnerText -notlike "*core*"} | 
    Select-Object -ExpandProperty href

这是如何使页面上的所有超链接返回一个(??),其链接以“jdb”结尾但不包含“core”(两者都列出)。现在$definitionPath包含您要查找的路径,现在可以下载。

我相信你需要PowerShell 3.0来实现这一目标。