From 1819ac197430f6374e0bbea949b4ff0a7822d38b Mon Sep 17 00:00:00 2001 From: Kevin Simmons Date: Sun, 4 Oct 2026 15:27:20 -0500 Subject: [PATCH] Fix CIM filter string parsing error - Extract maxAge string to variable to avoid nested quote issues - Simplify filter string construction for CIM queries --- PCRemediation/Invoke-PCRemediation.ps1 | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/PCRemediation/Invoke-PCRemediation.ps1 b/PCRemediation/Invoke-PCRemediation.ps1 index 13ab9b3..9e378d6 100644 --- a/PCRemediation/Invoke-PCRemediation.ps1 +++ b/PCRemediation/Invoke-PCRemediation.ps1 @@ -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 }