Windows Server2019通过代理执行Add-WindowsCapability安装OpenSSH失败
解决Windows Server 2019中Add-WindowsCapability无法通过代理安装OpenSSH的问题
问题核心
你通过PowerShell设置的HTTP_PROXY/HTTPS_PROXY是用户级临时环境变量,但Add-WindowsCapability依赖的DISM(部署映像服务和管理)服务使用WinHTTP网络栈,不会读取这些变量,而是依赖系统级代理配置或显式的DISM代理参数——这就是为什么Invoke-WebRequest(使用WinINet栈)能正常走代理,但DISM相关命令无法生效的原因。
解决方案
方案1:给DISM命令显式指定代理
直接在安装命令中通过-Proxy参数指定代理,这是最直接的临时解决方式:
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0 -Proxy "http://10.99.99.99:80"
方案2:配置系统级WinHTTP代理
如果需要让所有DISM相关命令默认走代理,可配置WinHTTP系统代理:
- 若已在系统GUI中配置过代理,可直接导入到WinHTTP:
netsh winhttp import proxy source=ie
- 也可手动设置WinHTTP代理:
netsh winhttp set proxy proxy-server="http://10.99.99.99:80"
- 验证配置是否生效:
netsh winhttp show proxy
配置完成后重新运行Add-WindowsCapability命令即可。
方案3:配置系统级环境变量(永久生效)
通过设置系统级环境变量,让DISM服务能读取到代理配置:
- 在管理员PowerShell中执行以下命令添加系统环境变量:
[Environment]::SetEnvironmentVariable("HTTP_PROXY", "http://10.99.99.99:80", [EnvironmentVariableTarget]::Machine) [Environment]::SetEnvironmentVariable("HTTPS_PROXY", "http://10.99.99.99:80", [EnvironmentVariableTarget]::Machine)
- 重启PowerShell或注销重新登录,让系统变量生效后再执行安装命令。
方案4:离线安装OpenSSH(备选)
如果代理配置始终无法生效,可采用离线安装方式:
- 在一台能联网的Windows Server 2019机器上,下载OpenSSH的cab包:
Save-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0 -Path C:\temp\
- 将下载的cab文件复制到目标服务器,执行离线安装:
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0 -Source C:\temp\
内容的提问来源于stack exchange,提问作者JamesDoge
相关产品推荐
相关产品推荐

