我目前有一個批次文件,用於查看文件夾是否存在,如果存在,請運行其中的卸載 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中,您可以同樣使用通配符。您也可以透過新增負 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
.我還添加了輸出行,以便對它選擇的資料夾有一定的可見性 - 只是為了幫助您調試。