Powershell下载文件的三种方法
layout: post
title: Powershell下载文件的三种方法
date: 2021-09-29
tags: [“BitsTransfer”,“download”,“powershell”,“powershell”,“计算机技术”]
使用powershell不借助第三方软件下载文件(据我所知)有三种方法:Invoke-WebRequest, System.Net.WebClient, Start-BitsTransfer.
Invoke-WebRequest
Invoke-WebRequest -Uri "<File URL>" -OutFile "<File Name>"
#吐槽一下这个Uri参数,不应该是Url吗?
#该参数有几个别名,wget、iwr、curl,但在pwsh7.0后wget和curl被取消了,可能开发者也觉得这样凑热度不太好。
iwr -Uri "<File URL>" -OutFile "<File Name>"
这个命令本来是用于发起web请求的,用OutFile参数将响应保存下来就能实现文件的下载。
不过这个命令下载文件时先将数据存在内存里,全部下载完成后才会写入磁盘,因此下载大文件时容易炸内存。
值得一提的是该命令返回的对象是经过解析的Microsoft.PowerShell.Commands.WebResponseObject对象,可以直接读出页面中的内容,所以可以用来写一个简单的爬虫。
PS> $bingImageSearch = Invoke-WebRequest -Uri "https://cn.bing.com/images/search?q=cats&first=1&tsc=ImageBasicHover"
PS> $bingImageSearch.Images | select class,alt,src
class alt src
----- --- ---
id_avatar sw_spd 个人资料图片