Script/Lote Se o diretório tiver uma certa idade, execute .exe

Script/Lote Se o diretório tiver uma certa idade, execute .exe

Atualmente, tenho um arquivo em lote que verifica se existe uma pasta e, se existir, executa o exe de desinstalação dentro dela e instala o programa com um msi. Preciso alterá-lo ou apenas convertê-lo para o PowerShell para que primeiro verifique a idade da pasta antes de continuar. A idade que pensei que usaria seria superior a 12 meses. Um problema que sempre encontrei foi que preciso usar um curinga para verificar se o diretório existe devido ao fato de ser um pouco diferente em cada computador no final do nome. Aqui está o que tenho até agora, sem nada relacionado à idade incluído.

@echo off
IF exist C:\ProgramData\bomgar*  ( goto Uninstall ) ELSE ( goto Install )

:Uninstall
cd C:\ProgramData\bomgar* 

remove.exe

:Install
msiexec /i "C:\pathtomsi" 

:End
Echo Test Complete

Qualquer ajuda ou conselho seria muito apreciado.

Responder1

No Powershell, você pode usar o curinga da mesma forma. Você também pode completar as comparações de datas adicionando 12 meses negativos:

$folders = Get-Item "C:\ProgramData\bomgar*" | Where-Object {
   $_.PSIsContainer -and $_.CreationTime -le (Get-Date).AddMonths(-12)
}

Se retornar um resultado, desinstale; caso contrário, instale:

If ($folders) {
   Foreach ($folder In $folders) {
      "UNINSTALL $($folder.FullName) - $($folder.CreationTime)"
   }
} Else {
   "INSTALL $($folder.FullName) - $($folder.CreationTime)"
}

Editar:possivelmente houve um erro lógico no meu valor maior ou igual a ( -ge). Tente alterá-lo para -le. Também adicionei linhas de saída para que haja alguma visibilidade sobre quais pastas estão sendo selecionadas - apenas para ajudá-lo a depurar.

informação relacionada