【问题标题】:powershell System.Net.WebClient.DownloadFile(String, String) throws cryptic errorspowershell System.Net.WebClient.DownloadFile(String, String) 引发神秘错误
【发布时间】:2016-07-14 22:57:31
【问题描述】:

这是我关于堆栈交换的第一个问题,所以我请求忍耐,以防违反社区礼仪。如果我可以澄清我的问题的任何部分,我将非常乐意为您这样做。

我正在为我的实习学习 powerShell,目前我正在编写一个从共享点站点提取 .csv 文件的脚本。我的目标是获取下载的文件,做一些事情,然后将其放回网站。在我做其他事情之前,我正在尝试下载文件,而我的根本问题在于 .net.webclient 的 .downloadfile() 方法。在执行时,我一直看到一个模糊的异常,我无法在网络上的任何地方或我的同事中找到信息。下面我将包括所涉及的 sn-p 和错误消息。下面我将向您介绍我已采取的故障排除步骤。

--------代码

  ## Download summary file from Sharepoint downloads new serverlist
    [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls
    $webclient = New-Object -TypeName System.Net.WebClient
    $webclient.Credentials = $spCreds ## defined earlier with import-clixml - also tried get-credential 
    $webclient.DownloadFile($URIaddress, $DownloadPath) ## defined earlier: $DownloadPath = "c:\temp\Summary.csv"

--------异常

Exception calling "DownloadFile" with "2" argument(s): "An exception 
occurred during a WebClient request."
At line:13 char:5
+     $webclient.DownloadFile($URIaddress, $DownloadPath)
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : WebException

--------采取的行动 我提供的凭据应该是有效的,因为当我在浏览器中输入 URI 时,我能够下载 $URIaddress 的内容。

我已经能够哄骗 .downloadFileAsync(string, string) 在指定的 $downloadPath 处创建一个文件,但下载似乎从未开始,并且文件保持为空。当尝试将 .DownloadFile() 转换为随机变量 ($foo) 时,$foo | gm 显示为空。

如果你们有任何想法,我很乐意试一试!

【问题讨论】:

  • 什么是$spCreds?你是如何创建它的?
  • $DownloadPath 的值是多少?它是否包含目标文件的完整路径名?

标签: powershell sharepoint webclient


【解决方案1】:

确实很神秘。

查看异常和内部异常,这些可能会让您更深入地了解发生了什么: $Exception = $error[0].Exception $Exception.InnerException

【讨论】:

  • 原来我有正确的凭据,但我缺乏访问权限:远程服务器返回错误:(401)未经授权。谢谢米歇尔,我不知道 $error[].exception 的细节有那么深。这实际上非常有帮助。
猜你喜欢
  • 1970-01-01
  • 2022-07-29
  • 2015-03-13
  • 2017-04-20
  • 2014-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-10
相关资源
最近更新 更多