Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尝试使用powershell从Web链接下载zip文件_Powershell_Powershell 3.0 - Fatal编程技术网

尝试使用powershell从Web链接下载zip文件

尝试使用powershell从Web链接下载zip文件,powershell,powershell-3.0,Powershell,Powershell 3.0,好的,我正在尝试从我们与powershell一起使用的web链接下载一个文件。我正在下载一个zip文件,其中名称的开头总是相同的,但中间部分的名称将根据zip的版本号而改变。当我使用完全限定的网址并将文件名硬编码到脚本中时,我已经能够下载该文件。我已经尝试了使用通配符的每个版本来获取所有最常见的zip版本,但是它出错了,说它在那里的服务器上找不到该文件。这是我已经拥有的代码,任何帮助都将不胜感激,因为我觉得我已经被它包围了 $url = 'http://blah/blah/blah/My Fil

好的,我正在尝试从我们与powershell一起使用的web链接下载一个文件。我正在下载一个zip文件,其中名称的开头总是相同的,但中间部分的名称将根据zip的版本号而改变。当我使用完全限定的网址并将文件名硬编码到脚本中时,我已经能够下载该文件。我已经尝试了使用通配符的每个版本来获取所有最常见的zip版本,但是它出错了,说它在那里的服务器上找不到该文件。这是我已经拥有的代码,任何帮助都将不胜感激,因为我觉得我已经被它包围了

$url = 'http://blah/blah/blah/My File Name 11.1111.11.zip'
$localFileName = 'C:\temp\MYzip.zip'

Invoke-WebRequest $url -UseDefaultCredentials -OutFile $localFileName

如果站点启用了目录浏览功能(除非您能够控制站点并打开它,否则不太可能),您可以执行以下操作:

$url = 'http://blah/blah/blah/'
$wr = iwr $url
$filename = $wr.Links.href | Where {$_ -match 'My File Name.*?\.zip'}
$wr = iwr "$url/$filename"

如果站点没有启用目录浏览,那么它肯定有一个带有ZIP文件链接的页面。下载该页面并使用相同的
$wr.Links.href
技巧获取所有链接,并查找与“我的文件名。*?.zip”匹配的链接。

如果站点启用了目录浏览功能(不太可能,除非您控制了该站点并可以打开它),则可以执行以下操作:

$url = 'http://blah/blah/blah/'
$wr = iwr $url
$filename = $wr.Links.href | Where {$_ -match 'My File Name.*?\.zip'}
$wr = iwr "$url/$filename"

如果站点没有启用目录浏览,那么它肯定有一个带有ZIP文件链接的页面。下载该页面并使用相同的
$wr.Links.href
技巧获取所有链接,并查找与“我的文件名。*?.zip”匹配的链接。

Invoke WebRequest的文档在-uri上说它不幸不接受通配符:感谢提醒Adil,是否有其他方法可以在不使用powershell中的Invoke WebRequest的情况下执行此操作?我一直在努力寻找其他的方法,但似乎遇到了麻烦。这不是客户的限制。web服务器无法响应通配符请求-它需要该服务器上特定项的URL(考虑否则的安全影响)。您需要提前知道该版本号,或者需要脚本可以查询的网页来找出文件名是什么。无论您使用的是PowerShell、Python、cURL、wget还是任何其他方法,您都会受到此限制。或者,让服务器提供一个静态URL,在内部解析为所需文件的“正确”版本。@alroc解释了这个问题。您是否需要先枚举文件列表?Invoke WebRequest在-uri上的文档说,很遗憾,它不接受通配符:感谢您提供的提示Adil,有没有其他方法可以在不使用powershell中的Invoke WebRequest的情况下执行此操作?我一直在努力寻找其他的方法,但似乎遇到了麻烦。这不是客户的限制。web服务器无法响应通配符请求-它需要该服务器上特定项的URL(考虑否则的安全影响)。您需要提前知道该版本号,或者需要脚本可以查询的网页来找出文件名是什么。无论您使用的是PowerShell、Python、cURL、wget还是任何其他方法,您都会受到此限制。或者,让服务器提供一个静态URL,在内部解析为所需文件的“正确”版本。@alroc解释了这个问题。您是否需要先枚举文件列表?