В отношении этого: Windows \ Temp большое количество файлов cab_XXXX
Я не могу удалить файлы. Я пытаюсь выполнить сменное удаление, но там случайно разбросаны файлы, заблокированные разрешениями.
Я попытался запустить PowerShell от имени администратора, но все равно получил проблемы с разрешениями.
Есть ли быстрый способ массово удалить там все файлы cab_?
Решили эту проблему, загрузив программу под названием "Unlocker", которая позволяла удалять файлы из памяти и удалять их.
.Люблю, когда люди ссылаются на мои ответы. :)
Попробуйте сначала остановить доверенную службу установки.
Вероятно, это потому, что файлы открыты в выполняющейся программе. Вы можете попробовать использовать утилиту Disk Cleanup в Windows для очистки папки Temp. Если она не работает в режиме онлайн, попробуйте загрузиться в безопасный режим и удалить их оттуда.
.Я обнаружил, что это помогает остановить три сервиса в коде, приведенном ниже. Изначально я написал текст справки на другом языке, и переводить его больно, но я добавляю соответствующий код PowerShell, который я сделал для моих менее технических сотрудников / а не для сотрудников, умеющих работать с командной строкой, чтобы вставить его из блокнота / что угодно в powershell.exe, и запускать его шаг за шагом, чтобы полуавтоматически очищать компьютеры с запущенными тактическими файлами. Я переводю наиболее важные части, которые я сейчас замечаю.
Это может произойти (помимо всего прочего?), когда лог CBSPersist становится примерно 1 или 2 Гб большим (я забыл какой, думаю последний), а makecab.exe пытается его сжать, терпит неудачу и не убирает за собой, а повторяет это действие бесконечно.
Мы обнаружили это, наблюдая за сервером с монитором процесса сизинтернета. Похоже, это вызвано Windows Updates, если я правильно помню.
- вот код, надеюсь, он кому-то поможет.
# Ensure we have a C:\temp. No output (necessary, but if you know what you're doing, you can tweak ... )
$TempDir = 'C:\temp'
if (-not (Test-Path -Path $TempDir -PathType Container)) { New-Item -ItemType Directory -Path $TempDir | Out-Null }
Set-Location -Path $TempDir
# Stop services. Lim inn disse tre linjene i powershell.exe og vent til den er ferdig.
# it could take a couple of minutes
Stop-Service -Name TrustedInstaller
Stop-Service -Name wuauserv
Stop-Service -Name BITS
# Wait for makecab.exe to stop working, it seems to die by itself after
# about a minute or three for me once you stop the services
# if you want something to look at while waiting for makecab.exe to die.
# you can also just look in task manager ...
$ProcessToCheck = 'makecab'
if (@(Get-Process -Name $ProcessToCheck -ErrorAction SilentlyContinue).Count -gt 0) {
while (@(Get-Process -Name $ProcessToCheck -ErrorAction SilentlyContinue).Count -gt 0) {
Write-Host -ForegroundColor Yellow "Waiting for ${ProcessToCheck}.exe to die ..."
Start-Sleep 10
}
}
else {
Write-Host -ForegroundColor Green "${ProcessToCheck}.exe is not running at all (anymore)."
}
Write-Host -ForegroundColor Green "${ProcessToCheck}.exe died, so you can continue."
# Så skal vi slette cab_*_*-filene fra C:\Windows\Temp og vi er paranoide så vi vil se over
# filene først for å verifisere. Kan hoppes over hvis du er verdensvant og sikker, antar jeg.
# Lim inn alle disse linjene under i powershell.exe-vinduet og trykk enter (blank linje) til slutt.
# Eller marker i PowerShell ISE og trykk F8.
$TempCabFilesFile = "$TempDir\SIKT_Cab_Clean_temp.txt"
$TempCBSFilesFile = "$TempDir\SIKT_CBS_Clean_temp.txt"
Get-ChildItem -Path "${env:windir}\Temp\cab_*_*" |
Select-Object LastWriteTime, @{n='Size (MB)'; e={[math]::Round(($_.Length / 1MB), 2)}}, FullName |
Format-Table -AutoSize |
Out-String -Width 1000 |
Set-Content -Encoding utf8 -Path $TempCabFilesFile
Get-ChildItem -Path "${env:windir}\Logs\CBS\cbspersi*.*" |
Select-Object LastWriteTime, @{n='Size (MB)'; e={[math]::Round(($_.Length / 1MB), 2)}}, FullName |
Format-Table -AutoSize |
Out-String -Width 1000 |
Set-Content -Encoding utf8 -Path $TempCBSFilesFile
notepad $TempCabFilesFile
notepad $TempCBSFilesFile
# inspect the files that pop up (merk at det ene notepad-vinduet kan havne bak andre ting)
# og sjekk at ikke noe som ikke skal slettes er med der.
# If all appears well, we run the code from before, but also delete
# sletter vi i tillegg.
# Det som skal slettes er filer med navn cab_1234_56 (vilkårlige tall) og
# CBSPersist_blabla.cab og -.log (.log kan være stor).
# Hvis du er superparanoid, så kan du kjøre disse og se over (fjern "#" først).
#Get-ChildItem -Path "${WinTempDir}\cab_*_*" | Remove-Item -WhatIf
#Get-ChildItem -Path "${env:windir}\Logs\CBS\cbspersi*.*" | Remove-Item -WhatIf
# This actually deletes the files! No output.
Get-ChildItem -Path "${env:windir}\Temp\cab_*_*" | Remove-Item
Get-ChildItem -Path "${env:windir}\Logs\CBS\cbspersi*.*" | Remove-Item
# Start the services again, and run a wuauclt /detectnow
# the latter sometimes fails, but it's not dangerous
Start-Service -Name TrustedInstaller
Start-Service -Name BITS
Start-Service -Name wuauserv
Start-Sleep 3
Start-Process -Wait -PassThru -FilePath wuauclt -ArgumentList '/detectnow'
#### Usually not necessary ####
# Try this if stuff appears broken. Can take a good while.
Start-Process -Wait -PassThru -FilePath sfc -ArgumentList '/scannow'