首先,感谢阅读。
我有一个HTA来集中一些重复的任务。 通过ssh登录到多个服务器并发送多个命令就是其中之一。
此代码的工作方式类似于vbs文件中的一个魅力
Option Explicit
Dim Shell, WMI, wql, process
Set Shell = CreateObject("WScript.Shell")
Set WMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
wql = "SELECT ProcessId FROM Win32_Process WHERE Name = 'putty.exe'"
dim cmd : cmd=InputBox("Enter command")
For Each process In WMI.ExecQuery(wql)
Shell.AppActivate process.ProcessId
Shell.SendKeys cmd & " {ENTER}"
Next
但是这个等效的,在HTA中只发送命令到一个或两个窗口。
sub sendToPuttyWindow(cmd)
Dim Shell, WMI, wql, process
Set Shell = CreateObject("WScript.Shell")
Set WMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
wql = "SELECT ProcessId FROM Win32_Process WHERE Name = 'putty.exe'"
For Each process In WMI.ExecQuery(wql)
Shell.AppActivate process.ProcessId
Shell.SendKeys cmd & " {ENTER}"
Next
end sub
目前我正在调用hta中的vbs文件,但我希望尽可能保持HTA文件的独立性。
你能帮我吗?
答案 0 :(得分:0)
不使用SendKeys
来自动化PuTTY。它将所有模拟的击键发送到当前前景窗口,无论可能是什么。如果需要连续运行多个命令:使用PuTTY套件中的plink
。它是为了这个目的而建造的。
plink -ssh -batch -m file user@host