Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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
- Host: GitHub
- URL: https://github.com/oanderoficial/clean-system-server-
- Owner: oanderoficial
- Created: 2022-12-11T17:34:19.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-06-05T18:19:22.000Z (8 months ago)
- Last Synced: 2024-06-05T20:32:38.893Z (8 months ago)
- Topics: clean, clear, powershell, powershell-script, system, windows
- Homepage:
- Size: 16.6 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
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çõesAnalisar 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