Windows \ Temp Большое количество файлов cab_XXXX - Невозможно удалить

В отношении этого: Windows \ Temp большое количество файлов cab_XXXX

Я не могу удалить файлы. Я пытаюсь выполнить сменное удаление, но там случайно разбросаны файлы, заблокированные разрешениями.

Я попытался запустить PowerShell от имени администратора, но все равно получил проблемы с разрешениями.

Есть ли быстрый способ массово удалить там все файлы cab_?

1
задан 13 April 2017 в 15:14
4 ответа

Решили эту проблему, загрузив программу под названием "Unlocker", которая позволяла удалять файлы из памяти и удалять их.

.
-1
ответ дан 3 December 2019 в 18:33

Люблю, когда люди ссылаются на мои ответы. :)

Попробуйте сначала остановить доверенную службу установки.

2
ответ дан 3 December 2019 в 18:33

Вероятно, это потому, что файлы открыты в выполняющейся программе. Вы можете попробовать использовать утилиту Disk Cleanup в Windows для очистки папки Temp. Если она не работает в режиме онлайн, попробуйте загрузиться в безопасный режим и удалить их оттуда.

.
1
ответ дан 3 December 2019 в 18:33

Я обнаружил, что это помогает остановить три сервиса в коде, приведенном ниже. Изначально я написал текст справки на другом языке, и переводить его больно, но я добавляю соответствующий код 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'
1
ответ дан 3 December 2019 в 18:33

Теги

Похожие вопросы