Fix CIM filter string parsing error

- Extract maxAge string to variable to avoid nested quote issues
- Simplify filter string construction for CIM queries
This commit is contained in:
Kevin Simmons committed 2026-10-04 15:27:20 -05:00
1 parent 78957bf722
commit 1819ac1974
1 file changed
+5 -2
+5 -2
View File
@@ -279,6 +279,7 @@ function Clear-TempFiles {
} else {
$systemRoot = (Get-CimInstance -ClassName Win32_OperatingSystem -CimSession $CimSession).SystemRoot
$maxAge = (Get-Date).AddDays(-$MaxAgeDays)
$maxAgeStr = $maxAge.ToString('yyyyMMddHHmmss.ffffff+000')
$tempDirs = @(
"$systemRoot\Temp",
@@ -286,7 +287,8 @@ function Clear-TempFiles {
)
foreach ($dir in $tempDirs) {
$files = Get-CimInstance -ClassName CIM_DataFile -CimSession $CimSession -Filter "Path='$($dir -replace '\\', '\\')\\' AND LastWriteTime < '$($maxAge.ToString('yyyyMMddHHmmss.ffffff+000))'" -ErrorAction SilentlyContinue
$dirPath = $dir -replace '\\', '\\'
$files = Get-CimInstance -ClassName CIM_DataFile -CimSession $CimSession -Filter "Path='$dirPath\\' AND LastWriteTime < '$maxAgeStr'" -ErrorAction SilentlyContinue
foreach ($file in $files) {
$file | Invoke-CimMethod -MethodName Delete -ErrorAction SilentlyContinue | Out-Null
}
@@ -294,7 +296,8 @@ function Clear-TempFiles {
$userDirs = Get-CimInstance -ClassName Win32_Directory -CimSession $CimSession -Filter "Name LIKE '%\\AppData\\Local\\Temp'" -ErrorAction SilentlyContinue
foreach ($dir in $userDirs) {
$files = Get-CimInstance -ClassName CIM_DataFile -CimSession $CimSession -Filter "Directory='$($dir.Name -replace '\\', '\\')' AND LastWriteTime < '$($maxAge.ToString('yyyyMMddHHmmss.ffffff+000))'" -ErrorAction SilentlyContinue
$dirPath = $dir.Name -replace '\\', '\\'
$files = Get-CimInstance -ClassName CIM_DataFile -CimSession $CimSession -Filter "Directory='$dirPath' AND LastWriteTime < '$maxAgeStr'" -ErrorAction SilentlyContinue
foreach ($file in $files) {
$file | Invoke-CimMethod -MethodName Delete -ErrorAction SilentlyContinue | Out-Null
}