Tenho um script do Powershell executado durante a noite para excluir automaticamente os arquivos que atendem a determinados critérios.
Como posso modificá-lo para capturar o número de arquivos selecionados para exclusão?
A declaração que estou usando é boa e simples, e o cmdlet Where-object se encaixaria perfeitamente no que já tenho, se eu conseguisse fazê-lo funcionar.
A declaração que estou tentando modificar é a seguinte:
$path = [path to containing folder]
Get-ChildItem -Path $path -File | Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-10) } | Remove-Item -Force
Use o parâmetro common
-OutVariable
(-ov
) para capturar os objetos de saída de um cmdlet em uma variável, além de enviá-los ao pipeline:Nota: O
-WhatIf
parâmetro comum no comando acima visualiza a operação . Remova-WhatIf
e execute novamente quando tiver certeza de que a operação fará o que você quer.Observação:
Enquanto os arquivos filtrados são capturados na variável
$files
, observe como o-OutVariable
argumento é apenasfiles
, ou seja, sem o$
sigilo.$files.Count
para determinar a contagem de arquivos correspondentes.-WhatIf
, como mostrado, permite que você examine os arquivos a serem excluídos com antecedência, antes de realmente excluí-los.Além disso, usei sintaxe simplificada acima
Where-Object
.Observe que a
-OutVariable
variável de destino sempre recebe uma coleção (do tipo[System.Collections.ArrayList]
), mesmo que apenas um ou nenhum objeto de saída seja capturado.$files = ...
); veja o problema do GitHub #3154 para uma discussão.