Windows puppet exec命令文件路径

Windows puppet exec command file path

我想知道是否可以在 puppet(windows 代理)中让变量保存文件名的值,然后将此变量值添加到 exec windows cmd.exe命令? 即我正在尝试将文件从共享驱动器复制到 c:\temp,如下所示:

$setup_msi = "myprogram.msi"

exec { 'copy_MSI_c:\temp': 
command => 'C:\windows\system32\cmd.exe /c "copy i:\data\${setup_msi}" c:\temp'
}

但是当 windows puppet 代理运行时,puppet 会解析 $setup_msi 变量名称本身,而不是该变量包含的值。我希望它能像这样解析它:C:\windows\system32\cmd.exe /c "copy i:\data\myprogram.msi c:\temp"

如有任何帮助,我们将不胜感激。

谢谢。

Fr3edom21.

命令字符串包含在单引号内,这就是变量未被替换的原因。

您的代码应该是

$setup_msi = "myprogram.msi"

exec { 'copy_MSI_c:\temp': 
    command => "C:\windows\system32\cmd.exe /c \"copy i:\data\${setup_msi} c:\temp\""
}

由于使用双引号意味着字符串本身将由 puppet 解析,因此还需要转义该字符串中的任何双引号,因此 \"copy instead of "copy.

希望对您有所帮助。

在花了太多时间让它工作之后,我找到了这样的解决方法:

$setup_msi = "i:\data\myprogram.msi"

    exec { 'copy_MSI_c:\temp':
        command => "C:\windows\system32\cmd.exe /c copy ${setup_msi} c:\temp",
    }

Fr3edom21.