使用Ruby编写Windows命令行脚本#每个循环的行为都出人意料
我希望多台计算机关闭进程并重新启动使用Ruby编写Windows命令行脚本#每个循环的行为都出人意料,ruby,windows,Ruby,Windows,我希望多台计算机关闭进程并重新启动.bat文件(我正在编写Windows脚本)。它只适用于第一台计算机 nodes = (1234..1235).to_a nodes.map! { |node| "pc" + node.to_s } apps_to_close = ["iexplore.exe", "powershell.exe", "ruby.exe", "chrome.exe", "cmd.exe", "taskhost.exe", "git.exe", "git-tfs.exe"]
.bat
文件(我正在编写Windows脚本)。它只适用于第一台计算机
nodes = (1234..1235).to_a
nodes.map! { |node| "pc" + node.to_s }
apps_to_close = ["iexplore.exe", "powershell.exe", "ruby.exe", "chrome.exe",
"cmd.exe", "taskhost.exe", "git.exe", "git-tfs.exe"]
def process_node(apps_to_close, node)
begin
apps_to_close.each do |app|
`taskkill.exe /S #{node} /U joe_user /P joe_pass /IM #{app} /F`
end
`@powershell cmdkey.exe /add:#{node} /user:joe_user /pass:joe_pass;
schtasks /RUN /TN "start_my_sched_task" /s "#{node}"`
rescue
puts "#{node} could not be restarted"
end
end
nodes.each do |node|
process_node(apps_to_close, node)
end
修正了它:
nodes = (1234..1235).to_a
nodes.map! { |node| "pc" + node.to_s }
apps_to_close = ["iexplore.exe", "powershell.exe", "ruby.exe", "chrome.exe",
"cmd.exe", "taskhost.exe", "git.exe", "git-tfs.exe"]
def process_node(apps_to_close, node)
begin
apps_to_close.each do |app|
`taskkill.exe /S #{node} /U joe_user /P joe_pass /IM #{app} /F`
end
Process.spawn("@powershell cmdkey.exe /add:#{node} /user:joe_user /pass:joe_pass;
schtasks /RUN /TN \"start_my_sched_task\" /s \"#{node}\"")
rescue
puts "#{node} could not be restarted"
end
end
nodes.each do |node|
process_node(apps_to_close, node)
end
修正了它:
nodes = (1234..1235).to_a
nodes.map! { |node| "pc" + node.to_s }
apps_to_close = ["iexplore.exe", "powershell.exe", "ruby.exe", "chrome.exe",
"cmd.exe", "taskhost.exe", "git.exe", "git-tfs.exe"]
def process_node(apps_to_close, node)
begin
apps_to_close.each do |app|
`taskkill.exe /S #{node} /U joe_user /P joe_pass /IM #{app} /F`
end
Process.spawn("@powershell cmdkey.exe /add:#{node} /user:joe_user /pass:joe_pass;
schtasks /RUN /TN \"start_my_sched_task\" /s \"#{node}\"")
rescue
puts "#{node} could not be restarted"
end
end
nodes.each do |node|
process_node(apps_to_close, node)
end
您是否收到错误消息?如果是,您收到了什么错误消息?没有错误消息。它只是不关闭应用程序,也不启动任何电脑的预定任务。它也不会起到解救作用。尝试将
节点放入循环中,并确保所有节点都在循环中。您需要获得某种类型的错误,否则无法知道这里出了什么问题。您可以从停止这些丑陋的反勾式命令执行开始,并将其替换为system('taskill.exe','S',node',/U','joe_user',…)
,您可以在其中捕获该命令的结果。您还可以使用捕获任何可能相关的诊断输出。我确实有一个版本带有popen3
。它试图在营救过程中打印stderr。从来没有。我没有执行放置节点
,但我进行了调试。它只通过了第一个节点。是否收到错误消息?如果是,您收到了什么错误消息?没有错误消息。它只是不关闭应用程序,也不启动任何电脑的预定任务。它也不会起到解救作用。尝试将节点放入循环中,并确保所有节点都在循环中。您需要获得某种类型的错误,否则无法知道这里出了什么问题。您可以从停止这些丑陋的反勾式命令执行开始,并将其替换为system('taskill.exe','S',node',/U','joe_user',…)
,您可以在其中捕获该命令的结果。您还可以使用捕获任何可能相关的诊断输出。我确实有一个版本带有popen3
。它试图在营救过程中打印stderr。从来没有。我没有执行放置节点
,但我进行了调试。它只通过了第一个节点。