我正在尝试从Puppet调用PowerShell命令。问题是即使PowerShell命令提供不正确(在这种情况下,iisres
而不是iisreset
),Puppet显示成功运行,如下所示:
Notice: /Stage[main]/Common::Iis::Iis_reset/Utils::Powershell_test[Restart IIS service]/Exec[Running command invoke-command -scriptblock {iisres} -verbose on agent]/returns: executed successfully
几天前,我问了一个类似的question,在那篇文章中提出的建议工作正常,直到我遇到这个问题。这是脚本:
[root@pe-server] cat iis_reset.pp
class common::iis::iis_reset {
utils::powershell_test { 'Restart IIS service':
command => 'invoke-command -scriptblock {iisres} -verbose',
}
}
[root@pe-server] powershell_test.pp
define utils::powershell_test (String $command) {
$powershell = 'C:/Windows/System32/WindowsPowerShell/v1.0/powershell.exe -NoProfile -NoLogo -NonInteractive'
exec { "Running command $command on agent":
command => "$powershell -Command \"& {$command; exit (1 - [int]$?)}\"",
logoutput => 'on_failure',
}
}
如何妥善解决此类问题?
注意:在我面临this问题之前,我实际上是在使用Puppet之前的Powershell提供程序进行所有exec
命令。