在PowerShell中将参数传递给$ webclient.DownloadFile()

时间:2017-04-18 02:11:18

标签: powershell powershell-v3.0

我第一次使用PowerShell执行一项小任务。我在磁盘上有一个文件文件,文件下载url links.Text文件有几行链接。我想下载到磁盘。我尝试使用以下代码。

$filepath = "C:\Users\User\Desktop\filelinks.txt"
$files = Get-Content $filepath
$i=0

foreach($fileurl in $files){
$webclient = New-Object System.Net.WebClient
$file = "C:\Users\User\Desktop\"+$i+".csv"
$webclient.DownloadFile($fileurl,$file)
$i++
}

但是我收到以下错误

Exception calling "DownloadFile" with "2" argument(s): "Illegal characters in path."
At line:8 char:1
+ $webclient.DownloadFile($fileurl,$file)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : ArgumentException

文本文件中的链接

"http://www.football-data.co.uk/mmz4281/1617/I1.csv"
"http://www.football-data.co.uk/mmz4281/1617/E1.csv"
"http://www.football-data.co.uk/mmz4281/1617/E2.csv"
"http://www.football-data.co.uk/mmz4281/1617/SP1.csv"
"http://www.football-data.co.uk/mmz4281/1617/D1.csv"

我应该如何在这里传递正确的论据

1 个答案:

答案 0 :(得分:2)

您的文件中的网址似乎包含在"..."中 - 实际双引号,当使用Get-Content读取时,会成为文字读取的部分行 - 这不是意图(嵌入式 "字符。在URL中不允许这样做,这解释了您看到的错误。)

  • 要么:通过从每行中删除封闭的C:\Users\User\Desktop\filelinks.txt实例来更新文件"

  • 或者:在阅读"行后删除封闭的Get-Content个实例:

    • $fileurl = $fileurl -replace '^"(.*)"$', '$1'