Skip to content

Latest commit

 

History

History
122 lines (95 loc) · 4.87 KB

README.md

File metadata and controls

122 lines (95 loc) · 4.87 KB

clean-system-server

Esse código tem como objetivo limpar a pasta de cache do SCCM (System Center Configuration Manager). Ele faz isso verificando os arquivos na pasta de cache e os objetos WMI associados, e excluindo aqueles que não são referenciados há mais de 30 dias. Além disso, ele remove pastas e objetos WMI órfãos que não têm correspondência na pasta de cache no disco.

Obter o Caminho do Cache do SCCM:

$SCCMCachePath = ([wmi]"ROOT\ccm\SoftMgmtAgent:CacheConfig.ConfigKey='Cache'").Location

Esta linha usa o WMI (Windows Management Instrumentation) para recuperar a localização do cache do SCCM do registro.

Verificar a Existência do Caminho:

if (!(Test-Path $SCCMCachePath)) {...}

Este bloco verifica se o caminho do cache recuperado existe e é acessível usando o cmdlet Test-Path .

Se não, uma mensagem de erro é escrita e o script é encerrado.

Obter Objetos de Cache Obsoletos:

$StaleCacheObjects = Get-WmiObject -Query "SELECT * FROM CacheInfoEx" -Namespace "ROOT\ccm\SoftMgmtAgent" | Where-Object { ... }

Esta linha recupera todas as informações do cache usando Get-WmiObject com a classe CacheInfoEx no namespace ROOT\ccm\SoftMgmtAgent .

A cláusula Where-Object subsequente filtra os resultados para objetos onde a diferença entre a data atual e a propriedade LastReferenced (convertida em um objeto datetime) é maior que 30 dias. Essencialmente, ele encontra objetos de cache não acessados em mais de 30 dias.

Excluir Objetos Obsoletos do Disco:

foreach ($StaleCacheObject in $StaleCacheObjects) {... }

Este loop itera por cada objeto de cache obsoleto encontrado na etapa anterior.

Dentro do loop:

Remove-Item -Path $StaleCacheObject.Location -Recurse -Force 

Tenta excluir a localização do objeto (o arquivo ou pasta) do disco.

-Recurse garante a exclusão de subpastas dentro da localização do objeto de cache.

-Force ignora solicitações de confirmação durante a exclusão.

O bloco try...catch lida com exceções potenciais (erros) durante a exclusão.

Se um erro ocorrer, ele grava uma mensagem de erro com a localização do objeto.

Excluir Objetos Obsoletos do WMI (Opcional):

O bloco try...catch tenta excluir os objetos de cache obsoletos do repositório WMI usando Remove-WmiObject.

Esta etapa é opcional e pode não ser necessária dependendo de seus requisitos.

Se um erro ocorrer, ele grava uma mensagem de erro genérica sobre a falha na exclusão do WMI.

Código

# Get the SCCM cache path
$SCCMCachePath = ([wmi]"ROOT\ccm\SoftMgmtAgent:CacheConfig.ConfigKey='Cache'").Location

# Check if the cache path exists and is accessible
if (!(Test-Path $SCCMCachePath))
{
    Write-Error "The SCCM cache path does not exist or is not accessible: $SCCMCachePath"
    return
}

# Get cache objects that have not been referenced for more than 30 days
$StaleCacheObjects = Get-WmiObject -Query "SELECT * FROM CacheInfoEx" -Namespace "ROOT\ccm\SoftMgmtAgent" | Where-Object { ([datetime](Date) - ([System.Management.ManagementDateTimeConverter]::ToDateTime($_.LastReferenced))).Days -gt 30  }

# Delete stale cache objects from disk
foreach ($StaleCacheObject in $StaleCacheObjects)
{
    try
    {
        Remove-Item -Path $StaleCacheObject.Location -Recurse -Force
    }
    catch [System.Exception]
    {
        Write-Error "Failed to delete stale cache object from disk: $($StaleCacheObject.Location)"
    }
}

# Delete stale cache objects from WMI
try
{
    $StaleCacheObjects | Remove-WmiObject
}
catch [System.Exception]
{
    Write-Error "Failed to delete stale cache objects from WMI."
}

# Get all cached folders from disk
$

Limpeza de Atualizações do Windows

Dism.exe

Reduzir o Tamanho da Pasta WinSxS

  • Abra o Prompt de Comando como administrador.
  • Execute os seguintes comandos para limpar as atualizações

Analisar a pasta WinSxS e fornecer um relatório sobre o uso de espaço:

Dism.exe /online /Cleanup-Image /AnalyzeComponentStore

Remover os componentes obsoletos e reduzir o tamanho da pasta:

DISM.exe /Online /Cleanup-Image /StartComponentCleanup /ResetBase

Remove pacotes de service pack substituídos:

dism.exe /online /Cleanup-Image /SPSuperseded

Referência: https://learn.microsoft.com/pt-br/windows-hardware/manufacture/desktop/clean-up-the-winsxs-folder?view=windows-11