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:

  1. O que é -lt e o que é -le e o que é -gt? Quando eu usaria cada um
  2. O script acima exclui apenas o arquivo ... como posso excluir pastas também?
  3. O script acima é baseado em LastWriteTime .. A respeito CreatedDate ou LastAccessed Tempo?
Foi útil?

Solução

OK, vamos lá:

  1. -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.

  2. 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

  3. 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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top