所以我有一些用于以特定用户身份运行批处理文件的代码。这是我尝试自动化以下语法
runas /user:thisguy "C:\ThisGuysScript.bat"
所以在 Ruby 中看起来像这样
Process.create(:command_line => "C:\\ThisGuysScript.bat ", :domain => "MYServer", :with_logon => "thisguy", :password => "thisguyspassword", :cwd =>“C:\\”)
所以我尝试将其放入 Chef 的 Recipe 中,但灾难袭来了
require 'win32/process'
::Process.create(:command_line => "C:\\ThisGuysScript.bat ", :domain => "MYServer", :with_logon => "thisguy", :password => "thisguyspassword", :cwd =>"C:\\")
因以下错误而失败
[Tue, 30 Oct 2012 15:57:03 +0000] FATAL: ArgumentError: You must supply a name when declaring a user resource
所以它似乎没有意识到我想使用win32风格的进程。 Chef 似乎覆盖了 win32 模块(我知道菜谱是操作码 DSL,而不是真正的 ruby,对吗?)
有人能够让这个工作吗?或者相同的功能具有不同的实现。查看了 Windows Recipe ,但没有发现太多
最佳答案
听起来您想制作一个 LWRP 来在 Windows 计算机上创建进程。
您收到的错误意味着您有类似的内容
user do # Missing name
gid 500
home "..."
end
正确的语法是
user "apache" do # or whatever the user name should be
# ...
end
如果您的 Recipe 中没有上述内容,则包含的文件可能有一个名为 user 的变量,这也会导致此问题。
为了回答你的子问题,Chef 是直接的 ruby,提供了一些可用的功能和运行事物的框架。请注意, Chef 运行有几个阶段。我认为您在编译阶段遇到了问题。
制定 LWRP 似乎是一条可行的道路。如果你不想走那么远,你可以做类似的事情。
ruby_block "Firing process lazers" do
require 'win32/process'
::Process.create(:command_line => "C:\\ThisGuysScript.bat ", :domain => "MYServer", :with_logon => "thisguy", :password => "thisguyspassword", :cwd =>"C:\\")
end
关于ruby - Chef : Create a process as another user,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13144130/