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:
1 parent
78957bf722
commit
1819ac1974
1 file changed
+5
-2
@@ -279,6 +279,7 @@ function Clear-TempFiles {
|
|||||||
} else {
|
} else {
|
||||||
$systemRoot = (Get-CimInstance -ClassName Win32_OperatingSystem -CimSession $CimSession).SystemRoot
|
$systemRoot = (Get-CimInstance -ClassName Win32_OperatingSystem -CimSession $CimSession).SystemRoot
|
||||||
$maxAge = (Get-Date).AddDays(-$MaxAgeDays)
|
$maxAge = (Get-Date).AddDays(-$MaxAgeDays)
|
||||||
|
$maxAgeStr = $maxAge.ToString('yyyyMMddHHmmss.ffffff+000')
|
||||||
|
|
||||||
$tempDirs = @(
|
$tempDirs = @(
|
||||||
"$systemRoot\Temp",
|
"$systemRoot\Temp",
|
||||||
@@ -286,7 +287,8 @@ function Clear-TempFiles {
|
|||||||
)
|
)
|
||||||
|
|
||||||
foreach ($dir in $tempDirs) {
|
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) {
|
foreach ($file in $files) {
|
||||||
$file | Invoke-CimMethod -MethodName Delete -ErrorAction SilentlyContinue | Out-Null
|
$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
|
$userDirs = Get-CimInstance -ClassName Win32_Directory -CimSession $CimSession -Filter "Name LIKE '%\\AppData\\Local\\Temp'" -ErrorAction SilentlyContinue
|
||||||
foreach ($dir in $userDirs) {
|
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) {
|
foreach ($file in $files) {
|
||||||
$file | Invoke-CimMethod -MethodName Delete -ErrorAction SilentlyContinue | Out-Null
|
$file | Invoke-CimMethod -MethodName Delete -ErrorAction SilentlyContinue | Out-Null
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user