如何在Invoke-WebRequest的-OutFile参数中引用通配符?
$filename = "Image[1].jpg"
$uri = [System.Uri]"http:/url/to/image.jpg"
Invoke-WebRequest -Uri $uri -OutFile $filename
这段代码给了我一个例外:
Cannot perform operation because the wildcard path Image[1].jpg did not resolve to a file.
Technet 说
这里有两点需要注意。首先,我们将路径名称括在单引号中。这不是强制性的,但它使我们的命令在眼睛上更容易一些。 (正如你将在一分钟内看到的那样)。其次,我们需要在方括号前加上两个后面的刻度字符(``);这告诉PowerShell我们希望将左方括号视为常规字符而不是通配符。就像我们说的那样,它看起来很疯狂,但它确实有效:
$filename = 'Image``[1``].jpg'
给我:
Cannot perform operation because the wildcard path Image``[1``].jpg did not resolve to a file.
将文件名更改为
$filename = "Image``[1``].jpg"
不会生成异常,但保存文件的名称为
Image`[1`].jpg
我很想更改文件名,但要求它们在下载时保持相同的名称。
关于如何使这项工作的任何想法?
THX
答案 0 :(得分:2)
不是优雅的解决方案:
$filename = 'c:\temp\Image(1).jpg'
$uri = [System.Uri]"http://www.google.fr"
Invoke-WebRequest -Uri $uri -OutFile $filename
Rename-Item $filename $filename.Replace('(', '[').Replace(')', ']')