我正在尝试让两台运行 Windows Server 2012 R2 的服务器通过服务器管理器相互通信。
SERVER1 能够毫无问题地刷新所有服务器信息。我可以毫无问题地查看 SERVER1 和 2 的所有状态。SERVER2 表示 RPC 服务器不可用,并且找不到 SERVER 1。
当我从 SERVER1 执行以下命令时,winrm id -r:SERVER2
出现错误,80338126
主要意味着它无法运行 SERVER2。
winrm quickconfig 显示它已在 SERVER2 上设置并可管理。使用应用于两台服务器的 GPO 允许它通过防火墙。
我尝试过以下修复方法: 修复 1 修复 2 修复 3 修复 4
我已检查以下内容:
- 系统正在监听 127.0.0.1、网络 IP 地址、::1
- WinRM 已配置并可进行远程管理
- WinRM Enumerate 正在监听端口 5296,并允许通过防火墙
- 远程 Shell 设置为“未配置”
- 服务器已重启
我还能做什么?WinRM 应该可以正常工作。这是一台生产服务器,配置为运行多项功能。我无法重建它。
更新:我发现防火墙规则“HTTP Through TLS/SSL”设置为“public”,而不是 Private/Domain。我更改了它。SERVER2 无法通过 WinRM 连接到 SERVER1,但使用服务器管理器时出现此错误:
配置刷新失败,错误如下。由于以下错误,无法从服务器检索元数据。WS-Management 服务无法处理该请求。目录中未找到资源 URI。目录包含描述资源或逻辑端点的元数据。
答案1
注册表中缺少以下项。
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WSMAN\Service]
"allow_remote_requests"=dword:00000001
添加密钥并重新启动 Windows 远程管理服务,SERVER1 现在可以使用 SERVER2 刷新状态。
快速检查了 WinRM 的侦听器,发现它正在侦听端口 5296,但没有防火墙规则允许它通过。制定了防火墙规则,现在两台服务器都在通信。
要检查您的 WinRM 通信,请转到 CMD 并运行以下命令。
winrm qc
winrm e winrm/config/listener
答案2
打开 NotePad/IDE 并复制以下脚本。将 WMI 脚本文本文件保存为“reinstall-wmi.bat” 双击 .bat 批处理文件以执行脚本。然后重新启动服务器以使配置生效。
@echo on
cd /d c:\temp
if not exist %windir%\system32\wbem goto TryInstall
cd /d %windir%\system32\wbem
net stop winmgmt
winmgmt /kill
if exist Rep_bak rd Rep_bak /s /q
rename Repository Rep_bak
for %%i in (*.dll) do RegSvr32 -s %%i
for %%i in (*.exe) do call :FixSrv %%i
for %%i in (*.mof,*.mfl) do Mofcomp %%i
net start winmgmt
goto End
:FixSrv
if /I (%1) == (wbemcntl.exe) goto SkipSrv
if /I (%1) == (wbemtest.exe) goto SkipSrv
if /I (%1) == (mofcomp.exe) goto SkipSrv
%1 /RegServer
:SkipSrv
goto End## Heading ##
:TryInstall
if not exist wmicore.exe goto End
wmicore /s
net start winmgmt
:End