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

Passing arguments to $webclient.DownloadFile() in PowerShell

我第一次使用 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"

我应该如何在这里传递正确的参数

您的文件中的网址似乎包含在"..."中 - 真正的双引号,当用Get-Content读取时,变成了literal 部分行读取 - 这不是意图(embedded " 字符。在 URL 中不允许,这解释了你的错误锯)。

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

  • 或者:在阅读带有 Get-Content:

    的行后删除封闭的 " 实例
    • $fileurl = $fileurl -replace '^"(.*)"$', ''