我有一个带有powershell 4的WindowsServer2012R2。
一个sql作业发出一个Invoke-WebRequest https://someserver/file.xml -OutFile c:/tmp/data.xml"。
如果出现ssl错误,它就会失败,即使我遵循Powershell Invoke-WebRequest Fails with SSL/TLS Secure Channel,并为[Net.ServicePointManager]::SecurityProtocol = "tls12, tls11, tls"或其他变体添加了前缀。
powershell 4太老了吗?
我应该尝试从https://github.com/PowerShell/PowerShell/releases安装Wowershell 6还是7?
这是由sql作业调用的,还是应该在某个地方指定它来运行v7而不是v4?
PS:我知道"Windows 2012 R2于2013年11月25日进入主流支持,但它的主流是2018年1月9日,扩展结束于2023年1月10日“,但升级现在不是一个选择。
编辑
我安装了powershell 5.1,它没有改变
Major Minor Build Revision
----- ----- ----- --------
5 1 14409 1005并这样做
[Net.ServicePointManager]::SecurityProtocol = "tls12, tls11, tls"
但还是得到了Invoke-WebRequest : The request was aborted: Could not create SSL/TLS secure channel.
编辑2
PS C:\Users\leif> $PSVersionTable
Name Value
---- -----
PSVersion 5.1.14409.1005
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.14409.1005
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1发布于 2020-03-10 17:32:44
我相信是的。Powershell依赖于遮罩下的.Net框架。4使用.Net 4.0,我认为它不支持默认添加或启用的TLS1.2。
TLS1.2是.Net 4.6中的默认协议(参见:https://blogs.perficient.com/2016/04/28/tsl-1-2-and-net-support/ )
注意:NET4.0。TLS 1.2不支持
因此,您需要围绕它编写代码,就像其他人建议或升级到WMF 5.1一样。在完成升级之前,一定要确保它不会破坏任何东西。有些MS产品,如SharePoint,可能与较新的版本不兼容。
此外,尝试通过以下方式设置您的TLS:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12以上假设是一个支持的PowerShell版本。
https://stackoverflow.com/questions/60617764
复制相似问题