使用Powershell下载文件

时间:2018-07-07 17:46:47

标签: powershell google-docs

以下Google Doc导出为CSV,然后使用标准的Web浏览器自动下载: https://docs.google.com/spreadsheets/d/1wDD_Xm8IQYuYNefv9cOJ_7afTLImHgYA05pfN3qY63E/export?format=csv

我正在尝试使用Powershell下载此文件而没有成功。我尝试使用Invoke-Webrequest,Start-BitsTransfer和webrequest对象,但没有运气。

已编辑:网址已更改。

2 个答案:

答案 0 :(得分:13)

Invoke-WebRequest带有一个参数,用于将其结果存储在文件中:-OutFile

Invoke-WebRequest URL -OutFile c:\file.ext

如果需要授权,则可以发送如下请求:

Invoke-WebRequest URL /* whatever is neccesary to login */ -SessionVariable MySession
Invoke-WebRequest URL -WebSession $MySession

要确定登录发生的表单的布局,可以使用Invoke-WebRequests返回对象。它将收集有关HTML上的表单和字段的信息(可能仅适用于Windows)。登录里程可能会因“两因素身份验证”有效与否而有所不同。可能您可以创建一些不需要Auth的文件的秘密链接,或者google可能允许您创建某种形式的私有访问令牌,可以将其随请求发送给Authorization-Header。

答案 1 :(得分:3)

TLDR 答案*:

方法一,默认同步**

Invoke-WebRequest $url -OutFile $path_to_file

方法二,默认同步**

(New-Object System.Net.WebClient).DownloadFile($url, $path_to_file)

方法 3,异步且可能不是立即的,使用 BITS service

Import-Module BitsTransfer
Start-BitsTransfer -Source $url -Destination $path_to_file

注意事项:

*:此答案适用于那些在 google 上搜索“如何使用 PowerShell 下载文件”的人。

**:如果需要异步下载,请阅读帮助页面