none
Criar relatório com contagem de data dos arquivos. RRS feed

  • Pergunta

  • Olá pessoal.

    Tenho um script que faz um relatórios dos arquivos que vão ser excluídos em 10 dias.

    Meu script é esse:

    $OldFileTime = (Get-Date).AddDays(-25) # Data para Comparação
    $FilePath = "C:\FTP\" # Diretório da pesquisa
    $LogFile = "C:\FTP\LOG\OLD\LogArquivosOLD.log" # Arquivo de Log
    
    Get-ChildItem $FilePath -Recurse | Select-Object Name, CreationTime, Length | where-object -FilterScript {$_.CreationTime -lt $OldFileTime} > $LogFile 

    O relatório fica assim:

    FullName                                CreationTime                           
    --------                                ------------                           
    C:\FTP\Ana                              13/02/2012 10:51:52                    
    C:\FTP\Ana\arquivoana.txt               13/02/2012 10:51:58                    
    C:\FTP\Ana\Casa                         13/02/2012 10:52:04   

    mas gostaria que aparecesse a data que vai ser excluído ou seja 30 dias após o dia de criação:

    FullName                                CreationTime                DataQueVaiSerExcluido              
    --------                                ------------                           
    C:\FTP\Ana                              13/02/2012 10:51:52                    
    C:\FTP\Ana\arquivoana.txt               13/02/2012 10:51:58                    
    C:\FTP\Ana\Casa                         13/02/2012 10:52:04                    

    Estou con dificuldades de fazer isto funcionar, alguém tem uma ideia?

     

    []'s, Maikon Pablo Rodrigues

    quinta-feira, 17 de maio de 2012 17:57

Respostas

  • Foi mal, não tinha visto a dúvida quanto ao FullName, achei que era só a data futura(no seu exemplo que apresentava como era o relatório já trazia o Nome Completo). É simples troque no Select o Name por FullName.

    $OldFileTime = (Get-Date).AddDays(-25) # Data para Comparação
    $FilePath = "C:\FTP\" # Diretório da pesquisa
    $LogFile = "C:\FTP\LOG\OLD\LogArquivosOLD.log" # Arquivo de Log
    
    Get-ChildItem $FilePath -Recurse | 
        Select-Object FullName, CreationTime, Length, @{Name='Data de Exclusão';Expression={($_.CreationTime).addDays(30)} } | 
        where-object -FilterScript {$_.CreationTime -lt $OldFileTime} > $LogFile 


    Fábio de Paula Junior



    sexta-feira, 18 de maio de 2012 11:59
    Moderador

Todas as Respostas

  • Maikon,

    Não entendi bem o que vc quer na DataQueVaiSerExcluido mas a alteração que vou te passar já deve ser suficiente pra você dar andamento no seu problema, vc precisa criar um campo Hash no Select

    $OldFileTime = (Get-Date).AddDays(-25) # Data para Comparação
    $FilePath = "C:\FTP\" # Diretório da pesquisa
    $LogFile = "C:\FTP\LOG\OLD\LogArquivosOLD.log" # Arquivo de Log
    
    Get-ChildItem $FilePath -Recurse | 
        Select-Object Name, CreationTime, Length, @{Name='Data de Exclusão';Expression={($_.CreationTime).addDays(30)} } | 
        where-object -FilterScript {$_.CreationTime -lt $OldFileTime} > $LogFile 

    Veja que eu criei um 

    @{Name='Data de Exclusão';Expression={($_.CreationTime).addDays(30)} }

    Name é o nome do Campo adicionado e dentro de Expression você faz o seu cálculo, eu calculei +30 dias após a Criação do arquivo.


    Fábio de Paula Junior





    quinta-feira, 17 de maio de 2012 18:59
    Moderador
  • Ótimo,

    Era esta mesma a minha ideia, já tinha feito algo parecido, mas sempre que fazia algo assim o diretório dos arquivos ficava somente com o nome do arquivo e não o diretório inteiro.

    Precisamos muito saber o diretório completo pois temos muitas pastas para verificar.



    []'s, Maikon Pablo Rodrigues

    quinta-feira, 17 de maio de 2012 20:36
  • Maikon,

    Não entendi bem o que vc quer na DataQueVaiSerExcluido mas a alteração que vou te passar já deve ser suficiente pra você dar andamento no seu problema, vc precisa criar um campo Hash no Select

    $OldFileTime = (Get-Date).AddDays(-25) # Data para Comparação
    $FilePath = "C:\FTP\" # Diretório da pesquisa
    $LogFile = "C:\FTP\LOG\OLD\LogArquivosOLD.log" # Arquivo de Log
    
    Get-ChildItem $FilePath -Recurse | 
        Select-Object Name, CreationTime, Length, @{Name='Data de Exclusão';Expression={($_.CreationTime).addDays(30)} } | 
        where-object -FilterScript {$_.CreationTime -lt $OldFileTime} > $LogFile 

    Veja que eu criei um 

    @{Name='Data de Exclusão';Expression={($_.CreationTime).addDays(30)} }

    Name é o nome do Campo adicionado e dentro de Expression você faz o seu cálculo, eu calculei +30 dias após a Criação do arquivo.


    Fábio de Paula Junior


    Preciso continuar com o diretório completo dos arquivos tem como fazer esta alteração sem mexer na parte 

    Get-ChildItem $FilePath -Recurse

    e continuar aparecendo o diretório como antes?






    []'s, Maikon Pablo Rodrigues

    quinta-feira, 17 de maio de 2012 20:42
  • Foi mal, não tinha visto a dúvida quanto ao FullName, achei que era só a data futura(no seu exemplo que apresentava como era o relatório já trazia o Nome Completo). É simples troque no Select o Name por FullName.

    $OldFileTime = (Get-Date).AddDays(-25) # Data para Comparação
    $FilePath = "C:\FTP\" # Diretório da pesquisa
    $LogFile = "C:\FTP\LOG\OLD\LogArquivosOLD.log" # Arquivo de Log
    
    Get-ChildItem $FilePath -Recurse | 
        Select-Object FullName, CreationTime, Length, @{Name='Data de Exclusão';Expression={($_.CreationTime).addDays(30)} } | 
        where-object -FilterScript {$_.CreationTime -lt $OldFileTime} > $LogFile 


    Fábio de Paula Junior



    sexta-feira, 18 de maio de 2012 11:59
    Moderador