Windows Server 启用 WinRM 远程执行 PowerShell 命令
原文链接:https://www.microcharon.com/tech/475.html,此贴仅是整理加收藏。
前提条件
- 操作系统: Windows Server 2022 Datacenter
- 权限: 所有操作均在管理员权限下进行
实践操作
配置HTTP侦听器
远程服务器配置WinRM
在服务器管理器中可以快速配置远程管理,即WinRM。
快速配置WinRM,创建默认的监听器并开启防火墙例外:
Enable-PSRemoting -Force
查看WinRM服务是否在运行:
Get-Service WinRM
查看WinRM监听器:
winrm enumerate winrm/config/listener
输出示例:
Listener Address = * Transport = HTTP Port = 5985 Hostname Enabled = true URLPrefix = wsman CertificateThumbprint ListeningOn = 10.0.4.11, 127.0.0.1, ::1, fe80::5dc1:2b3b:f22c:ed79%7
配置防火墙规则允许WinRM HTTP流量
WinRM默认生成规则仅保证公用网络中的同一子网的连接。为方便调试,新增防火墙规则保证所有网络可连接测试。
创建新的防火墙规则允许WinRM HTTP入站流量(端口5985):
New-NetFirewallRule -DisplayName "WinRM HTTP 5985" -Description "允许 WinRM HTTP 流量(端口 5985)" -Direction Inbound -Protocol TCP -LocalPort 5985 -Action Allow -Profile Any
- 若为云服务器,则在服务商处也同样放行。例如在腾讯云的轻量应用服务器上设置防火墙。
本地环境配置TrustedHosts
查看WinRM服务状态是否在运行:
Get-Service WinRM
开启WinRM服务:
Start-Service WinRM
确保WinRM服务在Running状态:
Get-Service WinRM
配置TrustedHosts:
# 查看当前的TrustedHosts配置 Get-Item WSMan:\localhost\Client\TrustedHosts # 添加远程主机到TrustedHosts列表 Set-Item WSMan:\localhost\Client\TrustedHosts -Value "*.microcharon.com" -Force # 若不起作用,则重启WinRM服务以应用更改 Restart-Service WinRM
再次查看TrustedHosts配置:
Get-Item WSMan:\localhost\Client\TrustedHosts
测试端口连通性并验证连接
确保远程服务器上的5985端口是打开的:
Test-NetConnection -ComputerName test.microcharon.com -Port 5985
连接远程服务器,输入管理员凭据:
Enter-PSSession -ComputerName "test.microcharon.com" -Port 5985 -Credential $cred
配置HTTPS侦听器
自签名方式创建泛域名证书
在远程服务器上自签证书:
$notAfter = (Get-Date).AddYears(5) $domainName = "*.microcharon.com" $cert = New-SelfSignedCertificate -DnsName $domainName -CertStoreLocation "cert:\LocalMachine\My" -NotAfter $notAfter $thumbprint = $cert.Thumbprint Write-Host "证书指纹: $thumbprint" Write-Host "证书有效期至: $($cert.NotAfter)"
配置WinRM使用该证书:
New-Item -Path WSMan:\LocalHost\Listener -Transport HTTPS -Address * -CertificateThumbPrint $thumbprint -Force
验证监听器配置:
winrm enumerate winrm/config/listener
启用防火墙规则允许WinRM HTTPS流量:
New-NetFirewallRule -DisplayName "WinRM HTTPS 5986" -Description "允许 WinRM HTTPS 流量(端口 5986)" -Direction Inbound -Protocol TCP -LocalPort 5986 -Action Allow -Profile Any
导出证书并在客户端使用:
Export-Certificate -Cert "cert:\LocalMachine\My\$thumbprint" -FilePath "C:\Temp\winrm.cer"
在客户端计算机上导入证书:
Import-Certificate -FilePath "C:\Users\micro\Downloads\winrm.cer" -CertStoreLocation "cert:\LocalMachine\Root\"
测试端口连通性并验证连接:
Test-NetConnection -ComputerName test.microcharon.com -Port 5986 Enter-PSSession -ComputerName "test.microcharon.com" -Port 5986 -UseSSL -Credential $cred
备注
- WinRM认证错误:检查凭据,或将目标机器添加到TrustedHosts配置设置中。
- 使用5986端口时,需追加
-UseSSL
参数。