我目前有一个批处理文件,它查看文件夹是否存在,如果存在,它会运行其中的卸载 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
。我还添加了输出行,以便可以查看它选择的文件夹 - 只是为了帮助您进行调试。