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

使用PowerShell连接远程服务器执行批处理时遇WinRM错误求助

WinRM远程连接执行批处理报错的解决方案

你编写的用于远程执行批处理的PowerShell脚本如下:

$password = ConvertTo-SecureString "pwd" -AsPlainText -Force 
$cred = New-Object System.Management.Automation.PSCredential ("user", $password ) 
Invoke-Command -ComputerName 10.10.10.10 -credential $cred -ErrorAction Stop -ScriptBlock {Invoke-Expression -Command:"cmd.exe /c 'C:\batchfile.bat'"}

执行时遇到错误:[10.10.10.10]连接服务器时出错:WinRM客户端无法处理...

这类报错基本都是WinRM服务未正确配置导致的,我来帮你一步步排查修复:

  • 检查并启动远程服务器的WinRM服务
    登录远程服务器,用管理员权限打开PowerShell,先查看服务状态:
    Get-Service WinRM
    如果状态不是Running,执行以下命令启动并设置开机自启:

    Start-Service WinRM
    Set-Service WinRM -StartupType Automatic
    
  • 配置远程服务器的WinRM远程监听
    在远程服务器的管理员PowerShell里执行:
    winrm quickconfig
    这个命令会自动配置防火墙允许WinRM请求、创建监听端点,按提示输入Y确认所有操作即可。

  • 确保本地客户端的WinRM配置正常
    在你运行脚本的本地机器上,同样用管理员PowerShell执行:
    winrm quickconfig
    完成客户端的基础配置,保证能正常发起WinRM连接请求。

  • 测试远程连接有效性
    先不用执行你的脚本,用以下命令测试与远程服务器的WinRM连接:
    Test-WSMan 10.10.10.10
    如果返回包含WinRM版本信息的结果,说明连接基础已经没问题了。

  • 优化你的脚本(更安全规范)
    你原来的脚本里明文写密码存在安全风险,而且脚本块里的Invoke-Expression也没必要,推荐改成更安全简洁的写法:

    # 通过弹窗输入凭据(避免明文密码)
    $cred = Get-Credential -Message "请输入远程服务器的登录凭据"
    Invoke-Command -ComputerName 10.10.10.10 -Credential $cred -ErrorAction Stop -ScriptBlock {
        # 直接调用cmd执行批处理
        cmd.exe /c "C:\batchfile.bat"
    }
    

内容的提问来源于stack exchange,提问作者Sravani Chinta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:44:32