Script PowerShell para excluir arquivos antigos
-
06-07-2019 - |
Pergunta
O script a seguir excluirá arquivos em um diretório nomeado com mais de 14 dias e escreverá para um .txt
com o caminho e os arquivos excluídos (encontrou este script em outro fórum ... CREDIT TO SHAY):
dir c:\tmp -recurse | where {!$_.PsIsContainer -AND $_.lastWriteTime -lt (Get-Date).AddDays(-14) } | select LastWriteTime,@{n="Path";e={convert-path $_.PSPath}} | tee c:\oldFiles.txt | Remove-Item -force -whatif
Eu tenho 3 perguntas:
- O que é
-lt
e o que é-le
e o que é-gt
? Quando eu usaria cada um - O script acima exclui apenas o arquivo ... como posso excluir pastas também?
- O script acima é baseado em
LastWriteTime
.. A respeitoCreatedDate
ouLastAccessed
Tempo?
Solução
OK, vamos lá:
-lt, -le e -gt são operadores de comparação. LT significa menos do que LE significa menos ou igual que, e GT significa maior que.
A remoção de pastas pode ficar perigosa se você não tiver controle sobre o que fica dentro dele. Você pode ter problemas e estar ciente da perda de dados. Você pode excluir pastas usando o mesmo cmdlet de remoção de itens, apenas brincando com suas opções. Verifique este artigo, ele tem ótimas instruções sobre como alcançá -lo:http://searchwindowsserver.techtarget.com/generic/0,295582,sid68_gci1275887,00.html
Geralmente, para arquivos que estão sentados lá há um tempo, a LastwritETime e a criada Datate e o LastAccessTime serão os mesmos. Em um arquivo somente leitura, como uma DLL, o LastAccessTime pode ser mais novo que os outros dois. Em um arquivo de leitura/gravação (como o arquivo PST do Outlook), o WriteTime e o AccessTime podem ser os mesmos. Basicamente, isso depende totalmente de você. Eles funcionam da mesma maneira que o último tempo. Considere a natureza dos arquivos que você deseja excluir e vá em frente!
Outras dicas
Os -lt -le e -gt são operadores de comparação em vez de <, <=,>. Modelo "Ajuda sobre_comparison_operators"No prompt de comando do PowerShell para obter os detalhes de cada tipo e o motivo para usá -los em vez dos que você conhece de outros idiomas.
Para excluir pastas também, você precisa remover o ! $. Psiscontainer e parte do filtro onde. Isso está removendo todos os itens das listas que são diretórios.
Não sei ao certo o que você procura com a pergunta "O que se tal tempo criado ou no último tempo de acesso", mas você pode simplesmente usar essas propriedades de maneira semelhante à do último dia, mas precisa decidir sobre a lógica que está tentando alcançar.