Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Очистка папки с логами при достижении 10% свободного места (http://forum.oszone.net/showthread.php?t=350659)

Sokolvrn 09-02-2022 13:53 2979642

Очистка папки с логами при достижении 10% свободного места
 
Коллеги привет! Помогите с написанием скрипта:
Суть такова, есть папка, в ней файлы логов, задача запускать скрипт очистки раз в час (тут вопросов нет), и если свободного места на диске осталось <10% то скрипт удаляет файлы старше 7 дней. Далее через час скрипт через планировщик запустится снова, и допустим места все равно осталось <10%, тогда скрипт должен удалить файлы старше 6 дней и так до текущего (текущий день с логами не удаляем). Есть пока такой, но собрать все в едино из за небольшого опыта не получается:
(Проверяет на свободное место и удаляет файлы за 7 дней)
$percentWarning = 10
$ListDisk = Get-WmiObject -Class Win32_LogicalDisk
Foreach($Disk in $ListDisk){
if ($Disk.size -ne $NULL)
{
$DiskFreeSpace = ($Disk.freespace/1GB).ToString('F2')
$DiskFreeSpacePercent = [Math]::Round(($Disk.freespace/$Disk.size) * 100, 2)
if($DiskFreeSpacePercent -lt $percentWarning)
{
Get-ChildItem -Path "C:\Logs" -Filter *.log | where {$_.LastWriteTime -le (Get-Date).AddDays(-7)} | Remove-Item -Recurse -Force
}
}
}

DJ Mogarych 09-02-2022 18:00 2979657

Не проверял, пробуйте.
Код:

$disk = get-volume -DriveLetter "C"

if ($disk.SizeRemaining / $disk.size * 100 -lt 10) {
dir "C:\Logs\*.log" |? LastWriteTime -le (Get-Date).AddDays(-7) | del -Recurse -Force
}



Время: 09:14.

Время: 09:14.
© OSzone.net 2001-