使用Powershell从Google云端硬盘下载文件

xmd2e60i  于 2022-12-18  发布在  Shell
关注(0)|答案(1)|浏览(158)

我试图找到一个解决方案,从谷歌驱动器下载文件(共享文件,* 不是我拥有的文件 *)到服务器/网络驱动器上的位置。
我用的是:

$client = new-object System.Net.WebClient
$client.Credentials =  Get-Credential
$client.DownloadFile("https://docs.google.com/a/domainname.co.uk/spreadsheets/d/1in0m8PhfiYhu4qCWO1dxNc3OS3p8prF7HWRZ-bjnKBI/export?format=xlsx","W:\Corp\Comp Serv\Comp Op\OB\Dep Data\Call\Google backup")

但是,它返回消息:使用“2”个参数调用“DownloadFile”时发生异常:“远程服务器返回错误:(407)需要代理认证。”
因此,我在Credentials和DownloadFile之间添加了以下行:

$client.Proxy.Credentials =[System.Net.CredentialCache]::DefaultNetworkCredentials

这已经解决了(407)需要代理身份验证的问题,但现在我得到的错误:
使用“2”个参数调用“DownloadFile”时发生异常:“WebClient请求期间发生异常。”
第1行第21个字符

  • $客户端.下载文件〈〈〈〈(“https://docs.google.com/a/domainname.co.uk/spreadsheets/d/1in0m8PhfiYhu4qCWO1dxNc3OS3p8prF7HWRZ-bjnKBI/export?format=xlsx“,“W:\公司\薪酬服务\薪酬运营\产科\部门数据\呼叫\谷歌备份”)
  • 类别信息:未指定:(:)[],方法调用异常
  • 完全限定错误ID:点网络方法异常

而且,因为我几乎是一个完全的Powershell初学者,我不知道为什么我会收到这个消息。
最终,我需要它下载总共4/5个文件,都到同一个位置...而且,理想情况下,我需要这个通过批处理命令或类似的东西运行,这样它就可以是一个(几乎)1键解决方案...
怎么做?

x4shl7ld

x4shl7ld1#

DownloadFile中的第二个参数应该是文件路径,而不是目录路径。
参见此处:Error using $client.DownloadFile in Powershell script
编辑:要解决代理例外,您需要为您的呼叫设置代理验证。示例:

$source = "https://docs.google.com/a/domainname.co.uk/spreadsheets/d/1in0m8PhfiYhu4qCWO1dxNc3OS3p8prF7HWRZ-bjnKBI/export?format=xlsx"
$dest = "W:\Corp\Comp Serv\Comp Op\OB\Dep Data\Call\Google backup\download.xlsx"
$WebClient = New-Object System.Net.WebClient
$WebProxy = New-Object System.Net.WebProxy("http://myproxy.com:1111",$true)
$Credentials = New-Object Net.NetworkCredential("user,"","domain.local")
$Credentials = $Credentials.GetCredential("http://myproxy.com","1111", "KERBEROS");
$WebProxy.Credentials = $Credentials
$WebClient.Proxy = $WebProxy
$WebClient.DownloadFile($source,$dest)

https://social.technet.microsoft.com/Forums/windowsserver/en-US/1a05b90b-ce12-4974-b578-0c1e22d03f10/download-file-through-proxy-server

相关问题