
# Windows服务器WinRM服务配置与故障排查
本文介绍如何配置Windows服务器上的WinRM服务进行远程连接，以及遇到连接问题的故障排查方法。
#### WinRM服务配置
1. 使用管理员权限（如 administrator 账户或 administrators 组内的本地账户）登录到源端服务器。
2. 如果是Windows11系统，单击"设置\>网络和Internet\>以太网\>属性"，设置为专用网络。如果非Windows11系统请跳过该步骤，直接执行下一步。
3. 以管理员权限运行PowerShell。
4. 在PowerShell中执行如下命令，启动WinRM服务。 
   ```
   winrm quickconfig
   Enable-PSRemoting
   Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
   ```
   
   
5. 使用管理员权限，登录安装MgC Agent（原Edge）的服务器，并以管理员权限运行PowerShell。步骤[5.]\~[7.]均在安装MgC Agent的主机上执行。
6. 配置信任主机。
   
   在PowerShell中执行如下命令，将源端服务器加入到信任的host中。
   ```
   winrm set winrm/config/client '@{TrustedHosts="*"}'
   ```
   出于安全考虑，建议使用源端服务器的WinRMhost（即主机名或IP地址）替换TrustedHosts 的值"\*"。不替换代表信任任意主机。
   
   
7. 测试远程连接。 
   使用以下命令测试与源端服务器的连接，"登录账号"和"源端服务器IP"需要替换为源端服务器实际的登录账号和IP地址。
   ```
   Enter-PSSession -Credential 登录账号 -ComputerName 源端服务器IP
   ```
   
   
8. 在弹出的对话框中输入源端服务器登录账号对应的密码，单击"**确定** "，测试是否连接成功。
   
   ![](https://support.huaweicloud.com/tg-mgc/zh-cn_image_0000001982377273.png "点击放大")
   - 如果连接成功，可以输入任意命令来测试联调性。
   
   - 如果连接失败，请参考[WinRM远程连接失败故障排查]，进行处理。
   
   
   
   
 
 #### WinRM远程连接失败故障排查
如果远程连接测试失败，请参考方法进行故障排查：
- **检查端口连接** ：使用 telnet 命令测试源端服务器的5985端口是否可以访问。如果端口无法访问，检查源端防火墙或安全防护软件设置，确保5985端口开放。
  ```
  telnet ip port
  ```
  
- **检查网络配置** ：检查网络执行模式是否设置为"经典模式"，通过以下注册表命令检查：
  ```
  reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa" /v forceguest
  ```
  - 如果 forceguest 的值为"REG_DWORD 0x0"，则代表网络执行模式是"经典模式"。
  
  - 如果 forceguest 的值不是"REG_DWORD 0x0"，使用以下命令设置或更新 forceguest 值：
    ```
    reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa"  /v forceguest /t reg_dword /d 0x0
    ```
    
   
- **检查** **Powershell系统环境变量** ：Windows开始菜单进入**Powershell** 页面，确认**Powershell** 的环境变量。通过执行以下命令检查：
  ```
  [Environment]::GetEnvironmentVariable("Path","Machine")
  ```
  如果**Powershell** 的环境变量检查结果不包含C:\\windows\\System32;C:\\Windows，或者包含%PATH%。通过执行以下命令处理：
  ```
  $fixPath = "C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\"
  [Environment]::SetEnvironmentVariable("Path", $fixPath, "Machine")
  ```
  ```
  $env:PATH = [Environment]::GetEnvironmentVariable("Path","Machine")
  ```
  
- **确认账号密码**：确保在连接命令中输入的账号和密码是准确无误，错误的凭证会导致登录失败。
请按照以上方法排查，通常能够帮助定位并解决连接问题。如果问题依旧存在，建议联系技术支持人员寻求帮助。
