Windows \ Temp grandes quantidades de arquivos cab_XXXX - Não é possível excluir

1

Com relação a isso: Grandes quantidades de arquivos cab_XXXX do Windows \ Temp

Não consigo excluir os arquivos. Eu estou tentando fazer uma mudança de exclusão, mas existem arquivos aleatoriamente espalhados lá que são bloqueados por permissões.

Eu tentei executar o powershell como administrador e ainda assim recebi problemas de permissão.

Existe uma maneira rápida de deletar todos os arquivos cab_?

    
por Jason 27.09.2016 / 16:35

4 respostas

-1

Resolveu esse problema baixando um software chamado "Unlocker" que permitia desvincular arquivos da memória e excluí-los.

    
por 27.09.2016 / 23:28
2

Adoro quando as pessoas mencionam minhas respostas. :)

Tente interromper o serviço de instalação confiável primeiro.

    
por 27.09.2016 / 16:56
1

É provavelmente porque os arquivos estão abertos em um programa em execução. Você pode tentar usar o utilitário Disk Cleanup no Windows para limpar a pasta Temp. Se não funcionar enquanto estiver online, tente iniciar no modo de segurança e excluí-los de lá.

    
por 27.09.2016 / 16:47
1

Descobri que isso ajuda a interromper os três serviços no código abaixo. Eu escrevi o texto de ajuda em outro idioma originalmente, e é difícil de traduzir, mas estou adicionando o código PowerShell pertinente que fiz para meus colegas menos técnicos / não experientes em linha de comando para colar do bloco de notas / qualquer coisa no powershell.exe, e executar passo a passo, para automatizar semi-limpeza de computadores com produção de arquivos de táxi descontrolado. Estou traduzindo as partes mais pertinentes que vejo agora.

Isso pode acontecer (entre outras coisas?) quando um log do CBSPersist se torna em torno de 1 ou 2 GB (esqueci qual, acho que o último), e o makecab.exe tenta compactá-lo, falha e não limpa depois de si, e repete essa ação indefinidamente.

Descobrimos isso monitorando um servidor com o monitor de processo sysinternals. Isso parece ser acionado pelo Windows Updates, se bem me lembro.

Aqui está o código, espero que ajude alguém.

# 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'
    
por 16.10.2016 / 01:50