Хорошо, я провел дни, преследуя это вокруг. Существует ли проблема с марионеточным агентом 3.7.1 x64 в Windows 7 x64, где должностные лица с тем, "если" никогда НЕ не выполняют команду? Я попытался делать Пакетный пример:
если => "исходный список C:/ProgramData/chocolatey/choco.exe | findstr-i 'шоколадный [Отключенный]'",
Powershell и теперь скомпилированный исполняемый файл AutoIT:
exec { 'disablepublicchocolatey':
command => "C:/ProgramData/chocolatey/choco.exe source disable -n=chocolatey",
unless => 'c:/ProgramData/puppetfiles/checkifexists.exe repo "chocolatey [disabled]"',
require => [Exec['chocolatelyinstall'],File['checkifexists.exe']],
}
Мой сценарий возвращается 1, если он находит текст 'шоколадным [отключенный]' в выводе choco исходного списка (текстовое соответствие не чувствительно к регистру)... Таким образом... это не должно работать если
c:\TEMP\AutoitScripts\chocolatey>choco source list
Chocolatey v0.9.9.6
chocolatey [Disabled] - https://chocolatey.org/api/v2/
но это, кажется, всегда работает... Существует ли ошибка? Я просто очень смущен?
Чтобы использовать |, вы должны использовать оболочку, встроенную в cmd.exe /C: https://docs.puppetlabs.com/windows/troubleshooting.html#shell-builtins
Смотрите пример ниже:
exec { 'configure_timezone':
command => "tzutil.exe /s \"${timezone}\"",
unless => "cmd.exe /C tzutil.exe /g | findstr /C:\"${timezone}\"",
}