【问题标题】:Exception Handling in Powershell 1.0Powershell 1.0 中的异常处理
【发布时间】:2010-08-06 00:35:11
【问题描述】:

我正在使用以下代码通过 PowerShell 1.0 上传文件。如何判断上传是否成功完成或是否有错误?如果上传成功,我需要删除文件。

我尝试过的:
1.陷阱条款。似乎无法让这个工作。
2.检查$webclient.UploadFile的返回值——这似乎总是一个空字符串,成功与否

$File = "D:\Dev\somefilename.zip"
$ftp = "@987654321@"

"ftp 网址:$ftp"

$webclient = 新对象 System.Net.WebClient $uri = 新对象 System.Uri($ftp)

“正在上传 $File...”

$webclient.UploadFile($uri, $File)

【问题讨论】:

    标签: powershell exception-handling ftp powershell-1.0


    【解决方案1】:

    将陷阱放到一个新范围内,以便捕获 Upload 引发的异常,例如:

    $succeeded = $true;
    & {
        trap { $script:succeeded = $false; continue }
        $webclient.UploadFile($uri, $File)
    }
    if ($succeeded) { 'Yay!' } else { 'Doh!' }
    

    您也可以尝试像这样捕获特定异常:

    trap [System.Net.WebException] { ... }
    

    【讨论】:

      【解决方案2】:

      UploadFile 方法是同步的。如果它在没有抛出异常的情况下完成,那么你就成功了。如果失败,您应该得到一个可捕获的 WebException。

      http://msdn.microsoft.com/en-us/library/36s52zhs.aspx

      我将省略有关错误捕获的详细信息,因为您似乎已经熟悉它了。

      【讨论】:

      • 任何错误捕获示例都会有所帮助。我尝试过 trap[Exception]{$failed = "true"} 但不断收到 Powershell 无法将陷阱识别为 cmd-let 的错误
      • 这里有一些很好的例子。请注意,它们在包含(请原谅双关语)异常代码的函数中进行陷阱,并将陷阱逻辑放在首位。我希望这有帮助。 huddledmasses.org/trap-exception-in-powershell
      猜你喜欢
      • 1970-01-01
      • 2014-02-28
      • 2021-12-20
      • 2013-05-30
      • 2019-04-12
      • 2014-04-06
      • 2020-06-26
      • 2011-06-09
      • 1970-01-01
      相关资源
      最近更新 更多