You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell调用WebClient.UploadFile上传成功却抛未知错误如何排查?

PowerShell 通用catch块异常信息排查方案

你可以通过扩展通用catch块的输出内容,直接获取异常的完整属性来定位问题,修改后的代码示例如下:

try {
    $wc = New-Object System.Net.WebClient
    $rawResponse = $wc.UploadFile("someURIhere", "Post", $File)
    $resp = System.Text.Encoding.ASCII.GetString($rawResponse)
    Write-Host $resp
}
catch [System.Net.WebException] {
    $Request = $_.Exception
    Write-host "Web异常捕获: $Request"
    $crapMessage = ($_.Exception.Message).ToString().Trim()
    Write-Output $crapMessage
}
catch {
    # 输出异常完整类型,先定位异常分类
    Write-Host "异常类型: $($_.Exception.GetType().FullName)"
    # 输出异常核心描述
    Write-Host "异常消息: $($_.Exception.Message)"
    # 输出脚本堆栈,定位具体出错的代码行
    Write-Host "出错位置: $($_.ScriptStackTrace)"
    # 可选:输出异常对象的所有属性,排查隐藏问题
    Write-Host "=== 异常完整属性 ==="
    $_.Exception | Format-List * -Force | Out-Host
}

常见场景说明

根据你描述的「文件上传成功但仍报错」的特征,异常大概率不出在上传环节,而是后续的响应解析环节:你当前用ASCII编码解析服务器返回的响应内容,如果服务器返回的内容包含非ASCII字符,会抛出System.Text.DecoderFallbackException类的异常,这类异常不属于System.Net.WebException,所以会进入通用catch块。
你可以先注释掉响应解析的两行代码,只保留UploadFile调用验证是否还会触发异常,快速定位出错位置。

内容的提问来源于stack exchange,提问作者jakebake

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 20:48:02