你需要调试这种情况。
你有一个脚本,然后某个东西(Jenkins是什么?)在远程PC上启动它,有时它可以正常工作,有时却失败了。
这是确定性的吗?
当它失败时,它总是失败吗?
它是如何失败的?
你需要更好地了解脚本何时/如何失败。
以下是我收集有关这些故障的更好理解的方法。
你能多次运行脚本吗?
从评论中看来,你每小时运行一次脚本,你能连续运行3/4/5次吗?每小时运行几次?
这将帮助你确定它是如何失败的:如果你运行它5次,它是否每次都有效?如果它失败了,它是否连续失败了5次?
你能尝试使用不同的脚本吗?
你可以创建一些更相似但更简单的脚本。
所以你可以尝试用RMDIR运行你的脚本,然后用一个简单的DIR命令运行另一个脚本(只是为了查看脚本启动/连接机制是否正常),然后用一个简单的ECHO命令运行另一个脚本(这样它就不需要访问任何文件夹)
在本地PC上运行调试脚本
然后,你可以同时运行其他在本地PC上运行的脚本(而不是需要执行RMDIR的远程PC),这些脚本尝试访问远程PC,使用PING或从/到网络共享复制文件...
嗅探网络
你甚至可以设置一个Wireshark实例,记录两台PC之间发送的所有数据包,这有助于分析/排除网络问题。
你显然需要跟踪/记录所有内容。
通过这种信息,也许你/我们可以更好地了解问题所在。
=====================================
更新1-记录一些日志
=====================================
也许你可以尝试使用以下修改后的脚本来获取一些日志文件。
这些脚本将创建2个日志文件,一个在远程PC上(包含远程执行命令的消息),另一个在本地PC上(包含来自PsExec的任何消息)
(你需要调整保存日志文件的路径)
psexec %HOSTNAME% -I -u %USERNAME% -p %PASSWORD% CMD /C "RMDIR /S /Q e:\SomeDir >>c:\RemoteComputer.log 2>&1" >>c:\LocalComputer.log 2>&1
您确定需要在CMD中使用/I参数吗?在我的电脑上,如果我使用/I参数,它不起作用...
psexec %HOSTNAME% -u %USERNAME% -p %PASSWORD% CMD /C "RMDIR /S /Q e:\SomeDir >>c:\RemoteComputer.log 2>&1" >>c:\LocalComputer.log 2>&1
经过我的电脑测试,我发现PsExec安装了一个服务来远程运行命令。这个服务称为PsExecSvc.exe,安装在c:\windows\上的WinXP PC中(我正在用于测试)。此命令执行所需的临时服务的远程安装/卸载可能是生成错误的可能“故障点”之一。
如果是这种情况,则可以通过查看LocalComputer.log来跟踪此问题,该日志将包含PsExec的消息/错误。
如我之前的建议所述,我还会尝试调度更简单的脚本。
psexec %HOSTNAME% -u %USERNAME% -p %PASSWORD% CMD /C "dir c:\ >>c:\RemoteComputerDir.log 2>&1" >>c:\LocalComputerDir.log 2>&1
并且
psexec %HOSTNAME% -u %USERNAME% -p %PASSWORD% CMD /C "echo SuperEchoTest >>c:\RemoteComputerEcho.log 2>&1" >>c:\LocalComputerEcho.log 2>&1
更新2 - 尝试使用WMI
===================================
您可以尝试使用WMI来运行远程命令。
wmic /node:%HOSTNAME% /user:%USERNAME% /password:%PASSWORD% process call create "CMD /C RMDIR /S /Q e:\SomeDir"
当您使用WMI时,需要确保Windows防火墙不会阻止您的命令。(当我尝试在Win 7 PC上运行具有WMIC的远程命令时,Windows防火墙通知弹出)
(我在这里找到了使用WMIC的指示:这里)