因此,我正在尝试找到一种快速解决方案,将文件从Google云端硬盘(共享文件,而不是我拥有的文件)下载到服务器/网络驱动器上的某个位置。
我正在使用:
$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
- $ 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”)
- CategoryInfo:NotSpecified:(:) [],MethodInvocationException
- FullyQualifiedErrorId:DotNetMethodException
而且,因为我几乎是Powershell的初学者,所以我不知道为什么我会收到这条消息。
最终,我需要它下载总共4/5个文件,所有文件都在同一个位置...理想情况下,我需要通过批处理命令或类似的东西来运行它所以它可以是(几乎) 1单击解决方案...
任何帮助将不胜感激!感谢〜
答案 0 :(得分:1)
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)