gpt4 book ai didi

windows - 如何使用 Puppet 基于 32/64 位操作系统动态选择系统文件夹的路径

转载 作者:可可西里 更新时间:2023-11-01 10:35:22 31 4
gpt4 key购买 nike

我正在使用 Puppet 在 Windows 2008 服务器 R2 上自动部署我的 Web 应用程序。

我将通过几个步骤访问系统文件夹(System32 或 SysWOW64,具体取决于 32/64 位操作系统)。

让我采取以下步骤之一:我将访问“appcmd.exe”以启动/停止网站。当脚本在 32 位机器上运行时,我需要访问位于 'C:/Windows/System32/inetsrv/appcmd.exe' 的文件,当脚本在 64 位机器上运行时机器,我需要访问位于 'C:/Windows/SysWOW64/inetsrv/appcmd.exe'

的文件

这是我编写的脚本部分。我不想硬编码路径。根据操作系统,我希望选择“appcmd.exe”的路径。我怎样才能做到这一点?

exec {"StopWebsite":
command=> 'C:/Windows/System32/inetsrv/appcmd.exe stop site/site.name:"Default Web Site"'
}

最佳答案

不是让你失望太多,而是你看过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 的其余部分带有反斜杠,所以我不想混淆处理程序。

关于windows - 如何使用 Puppet 基于 32/64 位操作系统动态选择系统文件夹的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30708365/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com