如何修复 "WinRM Shell 客户端无法处理请求.WSManCreateShell 函数所需的参数之一是零或零. "
描述
This error occurs when a client computer attempts to initiate a Windows Remote Management (WinRM) or PowerShell remoting session, but the local environment lacks the necessary variables, or the underlying configuration required to establish the shell structure is invalid.
The primary cause is typically a missing, corrupted, or blank environment variable on the local machine—most commonly the USERPROFILE 或是 TEMP/TMP 当 WinRM 基础架构初始化 WSManCreateShell 如果它们为 null,零长度,或指向无法访问的位置,初始化会立即失败,并抛出这个特定的错误.如果 WinRM 客户端配置本身配置错误或 PowerShell 执行策略存在冲突,也可能发生.
一步一步的修复
按照以下步骤来解决问题.
步骤1:验证和修复环境变量
由于一个失踪或错误. USERPROFILE 变量是最常见的触发器,你必须确保它指向正确的用户文件.
- 按下
Win + R在您的键盘上打开 Run 对话框. - 它们的类型
sysdm.cpl然后按下. Enter 为了打开. System Properties. - 导航到 Advanced 这里是我的房间.
- 按下 Environment Variables... 在底部的按.
- 在 User variables 部分 (顶部列表), 寻找
USERPROFILE.- 如果它不存在,点击 New... 设置变量名称为
USERPROFILE和变量值为C:\Users\YourUsername(取代YourUsername用您实际的 Windows 帐户名称). - 如果它存在,点击. Edit... 确保路径是准确的.
C:\Users\YourUsername没有任何后面的空格或引号.
- 如果它不存在,点击 New... 设置变量名称为
- 检查
TEMP这里是我的家.TMP确保它们指向一个有效的文件 (通常是%USERPROFILE%\AppData\Local\Temp) 没有. - 点击 OK 在所有窗口上保存更改.
- 重新启动您的计算机,以便系统在全球范围内应用新环境变量.
步骤2:重新启动WinRM服务
更新 Windows 远程管理服务将清除任何卡住的配置或临时状态错误.
- 按下 Windows Key, 类型
cmd,右键点击 Command Prompt,并选择 Run as administrator. - 键入下面的命令来停止服务,然后按下 Enter:
net stop winrm - 键入下面的命令重新启动服务,然后按下 Enter:
net start winrm
步骤3:修复winrm配置
将 WinRM 设置重置到默认的安全状态,可以修复隐藏的参数损坏.
- 打开 Command Prompt 作为管理员 (如步骤2所示).
- Type the following command to automatically configure and repair WinRM parameters, then press Enter:
winrm quickconfig - 如果提示进行更改或启用服务,输入
y(是的) 并按下. Enter.
步骤4:运行 PowerShell 通过默认配置文件绕行
有时本地自定义 PowerShell 配置文件将 null 参数传递给连接函数.您可以测试并绕过这种行为.
- 按下右键 Start 按和选择 Terminal (Admin) 或是 PowerShell (Admin).
- 如果您正在运行引发错误的脚本或命令,请运行 PowerShell,同时明确忽略本地配置文件,运行:
powershell.exe -NoProfile - 试着在这个干净的PowerShell实例中执行远程命令,看问题是否得到解决.
可能有一些错误.. Learn Microsoft