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
相关产品推荐
相关产品推荐

