Invoke-RestMethod无法捕获“代理阻止页面”错误/忽略了尝试捕获

问题描述

我正在使用Azure Instance Metadata Service API。这仅适用于Azure VM,这很好,但是我需要一些错误处理。麻烦的是,当我在开发笔记本电脑上(高度锁定的环境)运行它时,我得到了公司代理阻止页面,而我尝试执行的任何操作(没有双关语)都会捕获该阻止页面,从而处理错误

就像代理在Invoke-RestMethod做任何事情之前拦截请求一样。

有什么办法可以捕获屏蔽消息?

try
{
    $oRequest = Invoke-RestMethod -Headers @{"Metadata"="true"} -Method GET -Uri "http://169.254.169.254/Metadata/instance?api-version=2020-06-01"
}
catch [System.Net.WebException]
{
    Throw "An error has occurred: $($_.exception.Message)"
}

$oRequest为空,甚至管道到Out-Null也不会停止代理阻止页面消息。

我很高兴很难在公司环境之外进行故障排除,但是我希望有人可能会遇到这种现象并有捕获错误方法

我能想到的最好的办法是测试一下$oRequest是否为空并进行处理,但这似乎不正确,并且它仍会在PS控制台中显示阻止消息。

PowerShell版本7

T。一。

解决方法

好吧,得到此错误的原因是因为您正在捕获原始错误,然后使用temp强制另一个错误发生。您已经捕获了它,无需引发另一个错误。您无法将p传送到throw,因为没有任何内容可发送到管道。

尽管并非总是如此,但最好在要捕获错误的cmdlet上throw

out-null

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...