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

如何让多远程机器并行执行批处理脚本?优化pskill64连接耗时

多台远程机器批量操作优化方案

针对你提出的两个核心问题(串行执行效率低、重复建立连接耗时),以下是具体优化方案:


一、解决串行执行问题:实现多机器并行操作

Windows批处理中可通过start /B命令启动独立后台进程,让每台远程机器的操作任务同时执行,无需等待上一台完成。

二、解决重复连接问题:减少认证次数、合并进程终止操作

  1. 合并进程终止操作:用taskkill替代多次调用pskill64,一次命令即可终止多个目标进程,避免重复建立连接。
  2. 提前建立共享连接:先通过NET USE建立远程机器的共享连接,后续操作复用该连接,无需重复传入用户名密码。

优化后的完整脚本

@echo off
setlocal enabledelayedexpansion
set "uname=domain\admin"
set "pword="

:: 读取远程机器列表,为每台机器启动独立后台任务
FOR /F "tokens=* delims=" %%i in (list1.txt) DO (
    start /B cmd /c ^
    "echo 开始处理机器: %%i && ^
    :: 提前建立共享连接,复用认证信息
    NET USE \\%%i\C$ /u:!uname! !pword! && ^
    NET USE \\%%i\D$ /u:!uname! !pword! && ^
    :: 一次性终止多个进程,替代多次pskill
    taskkill /S %%i /F /IM java.exe /IM javaw.exe /IM edge.exe && ^
    :: 复制文件,复用已建立的共享连接
    xcopy "\\%%i\C$\Users\tcserv\Downloads\PSTools\fileToBeCopied.txt" "\\%%i\D$\APP\APPRoot\Runtime" /Y && ^
    :: 执行注册批处理
    psexec64 \\%%i "D:\APP\APPRoot\Runtime\register.bat" && ^
    :: 清理共享连接(可选)
    NET USE \\%%i\C$ /DELETE /Y && ^
    NET USE \\%%i\D$ /DELETE /Y && ^
    echo 机器%%i处理完成"
)
echo 所有后台任务已启动,请等待执行完成。
pause

脚本说明

  • start /B:启动后台进程,不打开新窗口,实现多机器并行处理。
  • taskkill /S %%i /F /IM ...:远程强制终止多个进程,一次命令完成,减少连接次数。
  • NET USE提前建立C$和D$的共享连接,后续xcopy、psexec都会复用该连接的认证信息,无需重复传入用户名密码。
  • setlocal enabledelayedexpansion:确保循环中变量!uname!和!pword!能正确解析。
  • /Y参数:在xcopy和NET USE删除时自动确认,避免交互等待。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 17:56:16