如何通过 PowerShell 确认 TLS 1.2 在 OS 上可用?

How to confirm via PowerShell that TLS 1.2 is available on the OS?

在 Windows Server 2016 中,可以通过组策略禁用 TLS 1.2。

我们想在 PowerShell 中向我们的安装程序脚本添加一个检查,以查看 TLS 1.2 是否可用。请注意,这不同于检查 URL 是否使用 TLS 1.2,或者是否在当前 PowerShell 会话中启用了 TLS 1.2。我们想检查 OS 是否提供 TLS 1.2,或者它是否已通过管理员组策略配置禁用。

有人知道怎么做吗?任何帮助将不胜感激。关于这个主题的在线信息不是很好。

使用以下内容:

$available = try {
  $orig = [Net.ServicePointManager]::SecurityProtocol
  [Net.ServicePointManager]::SecurityProtocol = 'Tls12'
  [bool] [System.Net.WebRequest]::Create('https://example.org/')
} catch {
  $false
} finally {
  [Net.ServicePointManager]::SecurityProtocol = $orig
}

如果需要检查系统是否默认启用了 TLS 1.2:

$tls12 = try {
  $resp = (New-Object System.Net.WebClient).DownloadString("https://tls-v1-2.badssl.com:1012/")
  [bool] $resp.Contains("green")
} catch {
  $false
}