修复Windows错误: WinRM Shell客户端环境变量零或零
这个全面的指南解释了 WinRM 错误的原因,并提供了简单的,一步一步的方法来解决它.
错误概述
这句话的含义
错误消息 "The WinRM Shell client cannot process the request. One of the environment variable name passed to the WSManCreateShell function is null or zero." 当Windows远程管理 (WinRM) 尝试初始化远程PowerShell或命令提示符会话时,但失败,因为本地计算机 (客户端) 或远程计算机 (服务器) 上的一个或多个环境变量受损,空,或格式不正确.
为什么会发生
- Empty Environment Variable Names :系统或用户环境变量存在,但具有空格或零名称字符串.
- Corrupted Registry Entries :Windows注册表路径存储环境变量包含错误的键值对.
- Bad PowerShell Profiles :使用您的用户配置文件初始化脚本将 null 变量注入到活跃会话中.
- Third-Party Software Interference :安全工具或应用程序安装器错误修改了系统环境块.
逐步修复问题
方法1:通过PowerShell检查和修复空环境变量
在环境配置块中空的变量名称是最常见的原因.您可以使用本地PowerShell窗口找到和删除它.
-
Open PowerShell as Administrator:
- 按下 Start 菜单是这样的.
- 它们的类型 PowerShell.
- 按下右键 Windows PowerShell 并且选择 Run as administrator.
-
Scan for Corrupted Variables:
- 复制并粘贴下面的脚本到PowerShell窗口,然后按下 Enter:
[Environment]::GetEnvironmentVariables().Keys | ForEach-Object { if ([string]::IsNullOrEmpty($_) -or \(_ -match "^\s*\)") { Write-Host "Found an empty or null environment variable name!" -ForegroundColor Red } }
- 复制并粘贴下面的脚本到PowerShell窗口,然后按下 Enter:
-
Identify and Remove via GUI (If Found):
- 按下
Win + R在您的键盘上打开 Run 对话框. - 它们的类型
sysdm.cpl然后按下. Enter 为了打开. System Properties. - 让我们去看看. Advanced 这里是我的房间.
- 按下 Environment Variables 在底部的按.
- 通过两者. User variables 这里是我的家. System variables.
- 特别寻找任何一条 Variable 列是完全空的,只包含空格,或显示受损的符号.
- 选择断行并点击 Delete.
- 点击 OK 在所有打开的窗口上保存更改.
- 按下
方法 2: 清除环境注册表密钥
If the GUI does not display the broken variable, it may be hidden as a malformed entry inside the Windows Registry.
-
Open the Registry Editor:
- 按下
Win + R在你的键盘上. - 它们的类型
regedit然后按下. Enter. - 点击 Yes 如果显示用户帐户控制 (UAC) 提示.
- 按下
-
Check User Environment Variables:
- 在左侧中导航到以下路径:
HKEY_CURRENT_USER\Environment - 看看这个 Name 在右边窗口上的列.
- Ensure every entry has a valid name. If you see an entry with a blank name, right-click it and select Delete.
- 在左侧中导航到以下路径:
-
Check System Environment Variables:
- 导航到以下路径:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment - 检查 Name 在右边窗口上的列.
- 识别任何使用 null,空格或仅空格名称的条目.
- 右键单击无效输入并选择 Delete.
- 导航到以下路径:
-
Restart Your Computer:
- 关闭注册表编辑器.
- 重新启动您的PC,将注册表更改应用到系统状态.
方法 3: 重新设置 WinRM 服务
如果环境变量是清晰的,但WinRM客户端仍然故障,重置WinRM服务配置将恢复默认操作.
-
Open Command Prompt as Administrator:
- 按下 Start 菜单是这样的.
- 它们的类型
cmd. - 按下右键 Command Prompt 并且选择 Run as administrator.
-
Run WinRM Quick Config:
- 输入下面的命令并按下 Enter:
winrm quickconfig - 如果提示进行更改或分析配置,键入
y(是的) 并按下. Enter.
- 输入下面的命令并按下 Enter:
-
Restart the WinRM Service:
- 按照顺序运行这些命令,按下 Enter 在每次:
net stop winrm net start winrm
- 按照顺序运行这些命令,按下 Enter 在每次:
方法4:测试 WinRM 连接
在应用修复后,验证 WSManCreateShell 已经解决了初始化错误.
- 打开一个新的. PowerShell 窗户.
- 运行一个本地循环测试命令来确认shell客户端正确处理变量:
Test-WSMan - 如果成功,请明确使用:
Enter-PSSession -ComputerName localhost(取代
localhost如果连接到外部机器,您的远程服务器目标名称).
可能有一些错误.. Learn Microsoft