Ed *_*eal 6 scripting batch-file remote-access psexec
我正在尝试使用Windows批处理脚本,该脚本使用PsExec在远程计算机上执行命令.它周期性地具有"无效句柄",然后脚本失败.
该脚本没有改变或确实是任何一台机器.
有没有人知道为什么会发生这种情况,因为有时脚本会顺利运行.
或者,任何人都知道如何在机器上运行脚本作为具有更可靠技术的该机器的本地用户.
PS有时第一PsExec
部作品而其他作品失败.
编辑
该脚本只是在线(除了设置适当的变量)
PsExec %HOSTNAME% -I -u %USERNAME% -p %PASSWORD% CMD /C RMDIR /S /Q e:\SomeDir
Run Code Online (Sandbox Code Playgroud)
这有时会起作用但有时会因"无效句柄"而失败
您需要调试情况。
你有一个脚本,然后用某种东西(什么是 Jenkins?)在远程 PC 上启动它,有时它可以工作,有时它会失败。
它是确定性的吗?
当它失败时,它总是失败吗?
怎么会失败呢?
您需要更好地了解脚本如何/何时失败。
为了更好地理解这些失败,我将采取以下措施。
您可以多次运行该脚本吗?
从评论来看,您似乎每小时运行一次脚本,您可以每小时连续运行 3/4/5 次吗?
这将帮助您确定它是如何失败的:如果您运行它 5 次,它是否每次都有效?如果失败了,是不是连续失败了5次?
您可以尝试使用不同的脚本吗?
您可以创建一些更相似但更简单的脚本。
因此,您可以使用 RMDIR 尝试您的脚本,然后使用简单的 DIR 命令尝试另一个脚本(只是为了确定脚本启动/连接机制是否有效),然后使用简单的 ECHO 命令尝试另一个脚本(因此它不需要访问任何文件/文件夹)
在本地 PC 上运行调试脚本
然后,您可以同时运行在本地 PC(不是需要执行 RMDIR 的远程 PC)上运行的其他脚本,这些脚本尝试通过 PING 或通过复制文件从/到网络共享...
嗅探网络
您甚至可以设置一个 Wireshark 实例来记录 2 台 PC 之间发送的所有数据包,这有助于分析/排除网络问题。
您显然需要跟踪/记录一切。
有了此类信息,也许您/我们可以更好地了解问题所在。
=======================================
=======================================
也许您可以尝试使用以下修改后的脚本来获取一些日志文件。这些脚本将创建 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
Run Code Online (Sandbox Code Playgroud)
或以下不带 /I
您确定需要 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
Run Code Online (Sandbox Code Playgroud)
在我的 PC 上进行一些测试后,我发现 PsExec 在远程 PC 上安装了一项服务来远程运行命令。(它的名字叫 PsExecSvc.exe,安装在我用于测试的 WinXP PC 上的 c:\windows\ 中)
远程安装/卸载这个用于命令执行的临时服务肯定是可能的“故障点”之一产生错误。
如果是这种情况,那么您应该能够通过查看 LocalComputer.log 来追踪此问题,其中包含来自 PsExec 的消息/错误。
正如我之前的建议所述,我还会尝试安排更简单的脚本,例如
psexec %HOSTNAME% -u %USERNAME% -p %PASSWORD% CMD /C "dir c:\ >>c:\RemoteComputerDir.log 2>&1" >>c:\LocalComputerDir.log 2>&1
Run Code Online (Sandbox Code Playgroud)
和
psexec %HOSTNAME% -u %USERNAME% -p %PASSWORD% CMD /C "echo SuperEchoTest >>c:\RemoteComputerEcho.log 2>&1" >>c:\LocalComputerEcho.log 2>&1
Run Code Online (Sandbox Code Playgroud)
=====================================
=====================================
您可以尝试使用WMI来运行远程命令
wmic /node:%HOSTNAME% /user:%USERNAME% /password:%PASSWORD% process call create "CMD /C RMDIR /S /Q e:\SomeDir"
Run Code Online (Sandbox Code Playgroud)
当您使用 WMI 时,您需要确保 Windows 防火墙没有阻止您的命令。(当我尝试使用 WMIC 运行远程命令时,我的 Win 7 PC 上弹出了 Windows 防火墙通知) (这里
有使用 WMIC 的说明)
归档时间: |
|
查看次数: |
9157 次 |
最近记录: |