不要让你失望,但你看过puppet-iis模块(以前是 OpenTable 的 IIS 模块)吗?
如何使用 32 位应用程序(如果可用)
为了回答您的问题,这是我第一次听说获得 32 位应用程序的请求。以下内容应适用于 32 位和 64 位操作系统上的 32 位或 64 位 Puppet:
exec {'StopWebsite':
path => 'C:/Windows/SysWOW64/inetsrv;C:/Windows/System32/inetsrv',
command => 'appcmd.exe stop site /site.name:"Default Web Site"',
}
它之所以有效,是因为它先检查命令,C:\Windows\SysWOW64
然后再转到C:\Windows\system32
. 这允许它在运行时落入正确的 32 位appcmd.exe
。
如何使用 64 位应用程序(如果可用)
对于其他人,如果您总是尝试使用 64 位进程并且您的 Puppet 3.7.3 或更高版本,请使用$system32事实。无论您使用的是 64 位还是 32 位版本的 Puppet,这都有效。
exec {'somefunction':
command => "$system32\\cmd.exe /c some command",
}
或者您也可以尝试相反的技巧,设置路径顺序,使其首先获得 sysnative 并回退到 system32。
exec {'somefunction':
path => 'C:/Windows/sysnative;C:/Windows/System32',
command => 'cmd.exe /c some command',
}
保持路径的其余部分完好无损
如果您需要保留路径的其余部分,只需附加$path
到字符串的末尾,但用双引号指定它:
path => "C:\\Windows\\sysnative;C:\\Windows\\System32;$::path",
使用正斜杠可能会很好,但其余部分$path
使用反斜杠,所以我不想混淆处理程序。