PowerShell 2调用System.Net.WebRequest报配置系统初始化失败原因排查
问题原因分析
该错误本质是System.Net.WebRequest依赖的.NET运行时配置系统初始化失败,常见触发原因如下:
- .NET Framework 2.0 配置文件损坏
PowerShell 2.0 底层默认绑定 .NET Framework 2.0 运行时,System.Net.WebRequest初始化时需要读取 .NET 全局配置文件、PowerShell 运行时配置文件。如果以下路径的配置文件存在格式错误、被篡改或者缺失,就会触发该报错:- 64位系统全局配置路径:
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\CONFIG\machine.config - 32位系统全局配置路径:
C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\machine.config - 用户级PowerShell配置路径:
%LOCALAPPDATA%\Microsoft\Windows\PowerShell\v1.0\powershell.exe.config
- 64位系统全局配置路径:
- 权限不足
当前运行 PowerShell 的账户没有读取上述 .NET 配置目录、配置文件的权限,常见于受限本地用户、域权限受限账户,或者被安全软件限制了文件读取权限的场景。 - 组策略/系统配置冲突
如果域组策略、本地安全策略强制配置了 .NET 全局网络设置(比如全局默认代理、SSL/TLS 策略限制),配置项不符合 .NET 2.0 的语法规范,也会导致 WebRequest 初始化时读取配置失败。
快速验证方法
- 先执行以下代码排除URI本身的格式问题:
[System.Net.WebRequest]::Create("http://www.example.com")
如果依然报错,基本可以确定是本地运行环境的配置问题,而非请求的地址有问题。
- 尝试用管理员身份启动 PowerShell 2.0 重新执行代码,如果执行成功则为权限问题导致。
内容的提问来源于stack exchange,提问作者Flori
相关产品推荐
相关产品推荐

