Powershell v5.1 Invoke-RestMethod 并绕过代理

Phi*_*ppe 6 powershell proxy powershell-v6.0 powershell-v5.1

我目前使用的是 Powershell V5.1,并且希望在 Invoke-RestMethod 命令上绕过 Internet Explorer 代理。

在 Powershell V6 中,有 -NoProxy 选项,指示 cmdlet 将不使用代理来到达目标。这是为了绕过 Internet Explorer 中配置的代理,这正是我想要做的。

在 Powershell V6 中,代码类似于:

$Result = Invoke-RestMethod -Uri $url  -NoProxy
Run Code Online (Sandbox Code Playgroud)

V5.1 有解决方法吗?

谢谢,菲利普

Mr-*_*Fly 7

我知道这已经很老了,但因为我也喜欢有好的解决方案,所以我会将我的解决方案发布到这个线程。我实际上使用了这个并且它工作完美(也适用于 Invoke-WebRequest):

    $Proxy=New-object System.Net.WebProxy
    $WebSession=new-object Microsoft.PowerShell.Commands.WebRequestSession
    $WebSession.Proxy=$Proxy
    $Antwort=Invoke-RestMethod -Method Post -Uri "https://thisismyrestsite" -Body $BodyJson -WebSession $WebSession
Run Code Online (Sandbox Code Playgroud)

也许这对其他人有帮助,因为到目前为止我在网上没有找到好的解决方案。如果有人需要特殊的代理设置,我相信他也可以用值填充 $Proxy,这可能允许比 Invoke-RestMethod 或 Invoke-WebRequest 更多的设置。编辑:请记住,这仅适用于 5.1。对于 Core,请使用 -NoProxy 开关!


pos*_*ote 1

不是原生的,因为这些是 PSCore Web cmdlet 中的一些改进,并且 MS 已声明不会向后移植任何内容。您只需从 PS5x 调用 PSCore 即可按原样使用 cmdlet。

使用此函数为 Invoke-WebRequest 完成类似的操作:

更新代理.ps1

根据此问答

Invoke-WebRequest 代理绕过

   $p = proxy
   $p.Override += "*.domain.com" 
   $p | proxy
   Invoke-WebRequest ...
   #you could return old override here.
Run Code Online (Sandbox Code Playgroud)

因此,它可能与 Invoke-RestMethod 一起使用,但我无法测试它。