Вдогонку (относительно) за постом про адресное удаление 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 секунд для отмены действий.