【问题标题】:Getting "Unable to find type [System.Net.ServicePointManager]." in PowerShell for OS X获取“无法找到类型 [System.Net.ServicePointManager]。”在 OS X 的 PowerShell 中
【发布时间】:2017-05-05 16:49:24
【问题描述】:

我正在尝试调试使用 Invoke-WebRequest 进行 https 调用的脚本。由于证书错误而不允许请求,我需要运行以下命令来禁用 SSL 验证:

[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}

但是,当我尝试运行此命令时,出现以下错误:

Unable to find type [System.Net.ServicePointManager].
At line:1 char:1
+ [System.Net.ServicePointManager]::ServerCertificateValidationCallback ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (System.Net.ServicePointManager:TypeName) [], RuntimeException
    + FullyQualifiedErrorId : TypeNotFound

操作系统:macOS Sierra

复制问题:

【问题讨论】:

    标签: macos powershell powershell-core


    【解决方案1】:

    对此不太熟悉,但是...您提供的 PowerShell for OS X 链接似乎使用 .NET Core。但是,.NET Core 不支持System.Net.ServicePointManager

    四处挖掘,我找到了this StackOverflow question,这导致了this 问题,然后是this 问题,但老实说,我对发生的事情有点迷茫,因为版本号指的是这样许多不同的东西。我不知道什么是最新的,什么不是。

    据我所知,.Net Core 的正确方法应该是 System.Net.Http 中的 Http​Client​Handler.​Server​Certificate​Custom​Validation​Callback,但我不确定您如何使用 PowerShell 来引用它。

    p>

    【讨论】:

      【解决方案2】:

      在版本 5 之前的 Windows PowerShell 上,您尝试使用的解决方法是必需的,因为 Invoke-WebRequest cmdlet 没有一种方便的方法来忽略证书检查。

      在 PowerShell 6+ 中,由于自签名证书在开源世界中的流行,Invoke-WebRequest 被升级为包含许多新的开关参数来处理它们。特别要看看documentation for the cmdlet中的-SkipCertificateCheck参数。

      该参数将允许您接受未知证书来加密您的连接,就像您在此处尝试做的那样。

      【讨论】:

      • 不知道为什么你没有很多赞成票先生。你让我头疼不已,还省去了很多谷歌搜索!谢谢你。 -SkipCertificateCheck 为我做到了
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-16
      • 1970-01-01
      • 2014-11-19
      • 2013-11-13
      • 1970-01-01
      相关资源
      最近更新 更多