簡體   English   中英

使用Ruby的Windows命令行腳本。 #each循環意外行為

[英]Windows command line scripting with Ruby. #each loop behaving unexpectedly

我期待多台機器關閉進程並重新啟動.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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM