Para usar |, você deve usar o shell embutido para contornar o cmd.exe / C: link
Veja o exemplo abaixo:
exec { 'configure_timezone':
command => "tzutil.exe /s \"${timezone}\"",
unless => "cmd.exe /C tzutil.exe /g | findstr /C:\"${timezone}\"",
}
Ok, passei dias correndo atrás disso. Existe um problema com o agente fantoche 3.7.1 x64 no Windows 7 x64, em que os executáveis com "a menos que" nunca executem o comando? Eu tentei fazer o exemplo do Batch:
unless => "C:/ProgramData/chocolatey/choco.exe source list | findstr -i 'chocolatey [Disabled]'",
Powershell e agora um executável AutoIT compilado:
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']],
}
Meu script retorna 1 se encontrar o texto 'chocolatey [disabled]' na saída da lista de fontes de choco (a correspondência de texto NÃO diferencia maiúsculas de minúsculas) ... Então ... isso NÃO deve ser executado se
c:\TEMP\AutoitScripts\chocolatey>choco source list
Chocolatey v0.9.9.6
chocolatey [Disabled] - https://chocolatey.org/api/v2/
mas parece que sempre corre ... Existe algum bug? Estou muito confuso?
Para usar |, você deve usar o shell embutido para contornar o cmd.exe / C: link
Veja o exemplo abaixo:
exec { 'configure_timezone':
command => "tzutil.exe /s \"${timezone}\"",
unless => "cmd.exe /C tzutil.exe /g | findstr /C:\"${timezone}\"",
}