A solução mais fácil, como ainda falta o suporte do PowerShell para operações de arquivos, é criar um script do PowerShell para chamar o utilitário compact.exe
e configurá-lo como uma tarefa agendada. Devido ao espaço no nome do caminho, você deseja chamar compact.exe
diretamente, em vez de usar Invoke-WMIMethod
e a classe CIM_DataFile
(o que causará muito esforço extra para lidar com o espaço no caminho). / p>
Assumindo uma idade de três dias para o X, seu script do PowerShell seria parecido com:
$logfolder="[location of the first logging subfolder]"
$age=(get-date).AddDays(-3)
Get-ChildItem $logfolder | where-object {$_.LastWriteTime -le $age -AND $_.Attributes -notlike "*Compressed*"} |
ForEach-Object {
compact /C $_.FullName
}
$logfolder="[location of the next logging subfolder]"
Get-ChildItem $logfolder | where-object {$_.LastWriteTime -le $age -AND $_.Attributes -notlike "*Compressed*"} |
ForEach-Object {
compact /C $_.FullName
}
...
A segunda condição existe para acelerar a execução do script pulando os arquivos já compactados (que estariam presentes após a primeira execução deste script). Se você quisesse, ou tivesse muitas subpastas de criação de log diferentes, provavelmente faria sentido executar uma função desse código repetitivo do PowerShell, o que seria um exercício bastante trivial.