PowerShell · 12.09.2025

Генеральная уборка

Вдогонку (относительно) за постом про адресное удаление ETL, публикую скрипт для зачистки дискового пространства системного диска удалённого хоста от временных файлов, всё тех же файлов телеметрии и остатков обновлений:

## Заголовок скрипта ##
[System.Console]::Title = "Чистка мусора на удалённом хосте"

## Ввод имени пользователя ##
$computername = Read-Host "Введите имя удалённого хоста"

## Заголовок скрипта ##
[System.Console]::Title = "Чистка мусора на $computername"

## Тестируем подключение ##
$ping = Test-Connection -ComputerName $computername -Count 1 -Quiet
if ($ping)
{
    ## Ожидаем ##
    Write-Host "Будет запущено удаление файлов! Нажмите Ctrl+C для отмены..." -ForegroundColor Red
    Start-Sleep(10)

    ## Переменные с путями ##
    $etllogspath = "\\$computername\c$\ProgramData\Microsoft\Diagnosis\ETLLogs\"
    $updates = "\\$computername\c$\Windows\SoftwareDistribution\Download"
    $systemtemp = "\\$computername\c$\Windows\temp"
    $usertemp = "\\$computername\c$\Users\*\AppData\Local\Temp\*"

    ## Чистка ETL ##
    Get-ChildItem -Path $etllogspath -Filter *.etl |
     Where-Object {$_.Name -notlike "INVAGENT_Utc.etl"} | 
     Remove-Item -Verbose -ErrorAction SilentlyContinue #-WhatIf

    ## Чистка кэша обновлений ##
    Get-ChildItem -Path $updates |
     Where-Object {$_.Name -notlike "SharedFileCache"} |
     Remove-Item -Recurse -Verbose -ErrorAction SilentlyContinue #-WhatIf

    ## Чистка системных темпов ##
    Get-ChildItem -Path $systemtemp |
     Remove-Item -Recurse -Verbose -ErrorAction SilentlyContinue #-WhatIf

    ## Чистка пользовательских темпов ##
    Get-ChildItem -Path $usertemp |
    Remove-Item -Recurse -Verbose -ErrorAction SilentlyContinue #-WhatIf  
}
else
{
    Write-Host "Хост $computername не отвечает!" -ForegroundColor Red
}

Write-Host
Write-Host "Работа скрипта завершена!" -ForegroundColor Cyan
Start-Sleep(10)

Перед зачисткой скрипт предупредит и даст 10 секунд для отмены действий.