使用PowerShell下载文件

z9smfwbn  于 2022-12-13  发布在  Shell
关注(0)|答案(3)|浏览(411)

我有一个CSV文件的URL,可以在浏览器中下载并打开该文件,没有任何问题。
我尝试使用PowerShell下载此文件,但没有成功。我尝试使用Invoke-WebRequestStart-BitsTransfer和webrequest对象,但没有成功。

c90pui9n

c90pui9n1#

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

Invoke-WebRequest $myDownloadUrl -OutFile c:\file.ext

如果在发送请求之前需要授权,请执行以下操作:

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

要确定登录发生的表单布局,您可以使用Invoke-WebRequests返回对象。它将收集HTML(可能仅适用于Windows)。登录里程可能会因双因素身份验证活动与否等因素而异。也许你可以创建一些秘密链接到您的文件,不需要认证或可能谷歌允许您创建一些私人访问令牌排序,它可以与您请求一起发送给我们授权头。

hgtggwj0

hgtggwj02#

TLDR回答*:
方法1,默认为同步**

Invoke-WebRequest $url -OutFile $path_to_file

(if出现错误 "...无法创建SSL/TLS安全通道。" 请参阅Powershell Invoke-WebRequest Fails with SSL/TLS Secure Channel

方法2,默认为同步**

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

方法3,异步,可能比其他两种方法慢得多,但对带宽使用非常温和(它使用BITS service)。

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

备注:

  • :这个答案是为那些在谷歌上搜索“如何使用PowerShell下载文件”的人准备的。
    **:如果您要异步下载,请阅读帮助页面
pbgvytdp

pbgvytdp3#

有一段时间,我一直在使用PS脚本下载PowerBI双月版,并使用BITS,它非常可靠,而且由于我删除了Start-BitsTransfer末尾的-Asynchronous,它现在变得更强大了

$url = "https://download.microsoft.com/download/8/8/0/880BCA75-79DD-466A-927D-1ABF1F5454B0/PBIDesktopSetup.exe"
$output = "%RandomPath%\PowerBI Pro\PBIDesktopSetup.exe"
$start_time = Get-Date

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

#Commented out below because it kept creating "Tmp files"
#Start-BitsTransfer -Source $url -Destination $output -Asynchronous

相关问题