Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/oanderoficial/clean-system-server-

clean-system-server
https://github.com/oanderoficial/clean-system-server-

clean clear powershell powershell-script system windows

Last synced: about 2 months ago
JSON representation

clean-system-server

Awesome Lists containing this project

README

        

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:

```ps1
$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:

```ps1
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:
```ps1
$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:
```ps1
foreach ($StaleCacheObject in $StaleCacheObjects) {... }
```

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


Dentro do loop:

```ps1
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

``` ps1

# 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:

```cmd
Dism.exe /online /Cleanup-Image /AnalyzeComponentStore
```
Remover os componentes obsoletos e reduzir o tamanho da pasta:
```cmd
DISM.exe /Online /Cleanup-Image /StartComponentCleanup /ResetBase
```
Remove pacotes de service pack substituídos:
```cmd
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