У меня есть несколько серверов IIS, на каждом из которых есть несколько сайтов, и я хочу регулярно архивировать все журналы IIS.
С помощью этого сайта и Google я собрал следующий скрипт powershell:
$files = Get-ChildItem "D:\logfiles\IIS-Logs\*.log" -Recurse | Where-Object {($_.LastWriteTime -lt (Get-Date).AddDays(-7))}
foreach ($file in $files) {& 'C:\Program Files\WinRAR\winrar.exe' a -tl -df -m5 "$file.rar" $File}
Проблема с этим сценарием заключается в том, что если есть... скажем... 2000 лог-файлов, он попытается одновременно запустить 2000 копий Winrar, и сервер рухнет. Это было неожиданно. Я ожидал, что он заархивирует файлы по одному. Последовательно.
У кого-нибудь есть идеи, как заставить это работать так, как я хочу?
Я бы очень хотел использовать Winrar вместо встроенной опции Compress-Archive, потому что:
- Я хочу, чтобы даты файла отражали заархивированный файл, а не дату, когда он был заархивирован.
- Я хочу, чтобы утилита удаляла файлы после архивирования, потому что утилита не удалит файл, если архивация не удалась.
Я не женат на Winrar, если я могу добиться этого другим способом.