2

所以我有一些代码可以作为特定用户运行批处理文件。这是我尝试自动化以下语法

runas /user:thisguy "C:\ThisGuysScript.bat"

所以它在Ruby中看起来像这样

Process.create(:command_line => "C:\\ThisGuysScript.bat ", :domain => "MYServer", :with_logon => "thisguy", :password => "thisguyspassword", :cwd =>"C:\\")

所以我试着把这个放在厨师和灾难袭击的食谱中

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 模块(我知道食谱是 opscode DSL 而不是真正的 ruby​​ 对吗?)

任何人都能够得到这个工作?或具有不同实现的相同功能。检查了 windows 食谱,但没有发现太多

4

1 回答 1

3

听起来你想制作一个 LWRP 来在 Windows 机器上创建一个进程。

你得到的错误意味着你有类似的东西

user do # Missing name
  gid 500
  home "..."
end

正确的语法是

user "apache" do # or whatever the user name should be
   # ...
end

如果您的食谱中没有上述内容,则包含的文件可能有一个名为 user 的变量,这也会导致此问题。

为了回答您的子问题,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
于 2012-11-12T11:12:12.510 回答