如何使用 powershell 从互联网下载文件

如何使用 powershell 从互联网下载文件

我想让我的 PowerShell 从互联网上下载一个文件。那么我该怎么做呢?我的原始代码是$File = URL Download file.WebClient = File.ext

答案1

这是非常常见的事情并且在网络和 Youtube 视频中都有很好的记录。通过快速的网络搜索,您就会找到相关选项。 有多种方法可以进行网络下载。

上述搜索结果:

使用 PowerShell 下载文件的 3 种方法

  1. 调用 Web 请求

第一个也是最明显的选项是 Invoke-WebRequest cmdlet。它内置于 PowerShell 中,可以按以下方法使用:

$url = "http://mirror.internode.on.net/pub/test/10meg.test"
$output = "$PSScriptRoot\10meg.test"
$start_time = Get-Date

Invoke-WebRequest -Uri $url -OutFile $output
Write-Output "Time taken: $((Get-Date).Subtract($start_time).Seconds) second(s)"
  1. 系统.Net.Web客户端

用于下载文件的常见 .NET 类是 System.Net.WebClient 类。

$url = "http://mirror.internode.on.net/pub/test/10meg.test"
$output = "$PSScriptRoot\10meg.test"
$start_time = Get-Date

$wc = New-Object System.Net.WebClient
$wc.DownloadFile($url, $output)
#OR
(New-Object System.Net.WebClient).DownloadFile($url, $output)

Write-Output "Time taken: $((Get-Date).Subtract($start_time).Seconds) second(s)"
  1. 开始位传输

如果您以前没有听说过 BITS,请查看此内容。BITS 主要用于异步文件下载,但同步下载也运行良好(假设您已启用 BITS)。

$url = "http://mirror.internode.on.net/pub/test/10meg.test"
$output = "$PSScriptRoot\10meg.test"
$start_time = Get-Date

Import-Module BitsTransfer
Start-BitsTransfer -Source $url -Destination $output
#OR
Start-BitsTransfer -Source $url -Destination $output -Asynchronous

Write-Output "Time taken: $((Get-Date).Subtract($start_time).Seconds) second(s)"

相关内容