You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell远程执行脚本遇WinRM错误及本地权限问题求助

问题描述

我的代码如下:

$securePassword = $password |ConvertTo-SecureString -AsPlainText -Force
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $username, $securePassword
Invoke-Command -FilePath "C:\Users\CompName\Desktop\PowerShell Scripts\CloseWinCC.ps1" -ComputerName "CompName" -Credential $cred

连接远程服务器"CompName"失败,错误信息:

WinRM客户端无法处理请求。如果身份验证方案不是Kerberos,或者客户端计算机未加入域,则必须使用HTTPS传输,或者将目标计算机添加到TrustedHosts配置设置中。请使用winrm.cmd配置TrustedHosts。请注意,TrustedHosts列表中的计算机可能不会被验证。

我尝试本地运行以下代码:

Invoke-Command -FilePath "C:\Users\CompName\Desktop\PowerShell Scripts\CloseWinCC.ps1" -ComputerName localhost -Credential $cred

但本地运行也报错:连接远程服务器localhost失败,错误信息:拒绝访问。

更新:已执行以下命令,但远程连接仍报相同错误:

Enable-PSRemoting -SkipNetworkProfileCheck -Force
解决方案

一、本地连接"拒绝访问"的原因及解决

  1. UAC远程限制:默认情况下,本地远程调用时,即使使用管理员账户,也会受UAC限制无法直接执行。
    • 解决:以管理员身份运行PowerShell;或修改本地UAC远程设置,执行命令:
      reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f
      Restart-Service WinRM
      
  2. 权限不足:确保$cred对应的账户拥有本地远程执行权限,需加入本地的Remote Management Users组,或直接使用本地管理员账户。

二、远程服务器"CompName"连接失败的原因及解决

错误提示明确说明:非域环境下,非Kerberos认证必须配置TrustedHosts或使用HTTPS传输。

方法1:配置本地TrustedHosts(最简方案)

以管理员身份在本地PowerShell执行,将目标服务器加入信任列表:

Set-Item WSMan:\localhost\Client\TrustedHosts -Value "CompName" -Concatenate
  • 若需信任所有主机,可执行Set-Item WSMan:\localhost\Client\TrustedHosts -Value "*"(生产环境不建议)
  • 修改后重启WinRM服务:Restart-Service WinRM

方法2:使用HTTPS传输(更安全)

如果需要更高安全性,可在目标服务器配置WinRM的HTTPS监听:

  1. 在目标服务器生成自签名证书:
    $cert = New-SelfSignedCertificate -DnsName "CompName" -CertStoreLocation "Cert:\LocalMachine\My"
    
  2. 配置WinRM使用该证书:
    winrm create winrm/config/Listener?Address=*+Transport=HTTPS "@{Hostname=`"CompName`"; CertificateThumbprint=`"$($cert.Thumbprint)`"}"
    
  3. 本地连接时指定使用HTTPS:
    Invoke-Command -FilePath "C:\Users\CompName\Desktop\PowerShell Scripts\CloseWinCC.ps1" -ComputerName "CompName" -Credential $cred -UseSSL
    

额外注意事项

  • 确保目标服务器WinRM服务已启动,防火墙允许WinRM端口(HTTP默认5985,HTTPS默认5986)
  • 若目标服务器为工作组环境,$cred必须是目标服务器的本地管理员账户(或拥有远程执行权限的账户)

内容的提问来源于stack exchange,提问作者Anne Marie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 23:43:13