Скрипт/Пакет Если каталог имеет определенный возраст, то запустите .exe

Скрипт/Пакет Если каталог имеет определенный возраст, то запустите .exe

В настоящее время у меня есть пакетный файл, который проверяет, существует ли папка, а затем, если она существует, запускает в ней exe-файл удаления, а затем устанавливает программу с помощью msi. Мне нужно изменить его или просто преобразовать в powershell, чтобы он сначала проверял возраст папки перед продолжением. Возраст, который я думал использовать, будет старше 12 месяцев. Проблема, с которой я постоянно сталкивался, заключалась в том, что мне нужно было использовать подстановочный знак для проверки существования каталога, поскольку он немного отличался на каждом компьютере в конце имени. Вот что у меня есть на данный момент, не включая ничего, связанного с возрастом.

@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

Любая помощь или совет будут высоко оценены.

решение1

В Powershell вы можете использовать тот же wild card. Вы также можете завершить сравнение дат, добавив отрицательные 12 месяцев:

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

Если результат есть, то удалите, в противном случае установите:

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

Редактировать:возможно, в моем больше или равно ( -ge) была логическая ошибка. Попробуйте изменить его на -le. Я также добавил выходные строки, чтобы было видно, какие папки он выбирает — просто чтобы помочь вам отладить.

Связанный контент