![Powershell 错误:“System.Net.ServicePointManager”的类型初始化程序引发了异常](https://linux22.com/image/1581241/Powershell%20%E9%94%99%E8%AF%AF%EF%BC%9A%E2%80%9CSystem.Net.ServicePointManager%E2%80%9D%E7%9A%84%E7%B1%BB%E5%9E%8B%E5%88%9D%E5%A7%8B%E5%8C%96%E7%A8%8B%E5%BA%8F%E5%BC%95%E5%8F%91%E4%BA%86%E5%BC%82%E5%B8%B8.png)
每当我尝试打开 Powershell 时,它都无法打开。当我尝试从 cmd 打开它时,出现此错误:
无法启动 shell。初始化过程中发生故障:“System.Net.ServicePointManager”的类型初始化程序引发异常。
我尝试过的事情:
- 与管理员一起打开
- sfc /scannow 没有显示任何错误
如果有任何帮助的话,32 位版本的 powershell 仍然有效。
答案1
我刚刚在客户端计算机上处理了这个问题。问题是machine.config
.NET Framework 4.x 的文件都已损坏(它们不知何故变成了零长度文件)。
删除文件是不够的。
只需用下面的代码替换零长度文件即可,但我使用了“已知良好”的版本以确保没有任何长期副作用。
这是文件所需的最低限度的内容machine.config
:
<?xml version="1.0" encoding="UTF-8"?>
<configuration />
更换这两个文件具有machine.config
来自同一版本的“已知良好”副本,为我解决了这个问题,并且让我不必担心以后会出现一些未知问题。
修复或替换machine.config
文件后需要重新启动。
Windowsmachine.config
文件位于以下文件夹之一:
%Windows%\Microsoft.NET\Framework\v{version}\CONFIG
%Windows%\Microsoft.NET\Framework64\v{version}\CONFIG
machine.config
各个应用程序的文件夹下也可能存在损坏的文件*\mono\{version}
,但如果不使用来自同一平台和 CPU 架构上的同一应用程序和应用程序版本的副本,我会更加犹豫是否要替换它们。
无论如何,在 Windows 上,您可以通过在名为 的 Windows 文件夹下搜索零长度文件来查找特定的缺陷文件machine.config
。此命令将为您执行此操作。
forfiles /P %windows% /S /M machine.config /C "cmd /c if @isdir==FALSE if @fsize EQU 0 echo @path"
答案2
这个问题是由于 powershell 需要访问安装在微软的 .NET 框架而产生的。对我来说,是安装 GIT 并在 MinTTy 上使用 windows 默认编辑器导致了这个问题。.NET 需要正确配置才能使 powershell 正常工作。幸运的是,通常有一个默认配置文件,其中包含正确的设置来帮助您入门。
这是可行的解决方案。
找到以下两个文件:
%Windows%\Microsoft.NET\Framework\v{version}\CONFIG\machine.config.default
%Windows%\Microsoft.NET\Framework64\v{version}\CONFIG\machine.config.default
复制它们分别进入:
%Windows%\Microsoft.NET\Framework\v{version}\CONFIG\machine.config
%Windows%\Microsoft.NET\Framework64\v{version}\CONFIG\machine.config
打开 PowerShell,瞧!
注意:我甚至不需要重新启动 powershell 就可以工作。