Ok, eu entendi bem rápido. Mas não tenho certeza, se é tudo o que podemos conseguir.
Apenas listar os arquivos não acionou o av digitalização, por isso precisamos de uma olhada no interior. Mais específico: temos que abrir o arquivo.
Isso é o que eu criei: um script do PowerShell começando antes do backup, em execução no diretório de arquivos especificado.
$d=Get-ChildItem -Filter '*.$01' -Recurse;
% {try{$_.OpenRead().Close()}catch{}} -InputObject $d -ErrorAction SilentlyContinue
No meu exemplo de demonstração com 44 diretórios, 29.000 arquivos, 1488 deles *.$01
-files a inspecionar e 2 deles com vírus, esse script precisou apenas de 345ms. O que é muito legal para mim.
Outras reflexões:
-
parece que as alças de arquivo estão fechadas na saída do powershell resultando em milhares de alças de arquivo
- como fechar a alça imediatamente após cada arquivo abrir / fechar?
- removendo os limites de velocidade do powershell
- otimizar o
ForEach
- o%
já apresenta um desempenho melhor queForEach-Object
- movendo o código para c #
- multi-threaded