none
Script para verificar data de modificação/criação arquivos RRS feed

  • Pergunta

  • Pessoal, boa tarde.

    Eu preciso de um Script que verificasse para mim qual foi a ultima alteração/exclusão de um determinado arquivo.

    Então depois de pesquisar bastante, eu criei o seguinte script:

                                            ##########SCRIPT QUE VERIFICA STATUS DO ARQUIVO################

    $folder = '\\TOTVSfix\ERP11\fast' # Coloca o caminho aqui que vai ser monitorado
    $filter = '*.*'  # Aqui pode ser colocado um filtro de qual tipo de arquivo que tem que ser procurado


    $fsw = New-Object IO.FileSystemWatcher $folder, $filter -Property @{IncludeSubdirectories = $true;NotifyFilter = [IO.NotifyFilters]'FileName, LastWrite'}

    Register-ObjectEvent $fsw Created -SourceIdentifier FileCreated -Action {
    $name = $Event.SourceEventArgs.Name
    $changeType = $Event.SourceEventArgs.ChangeType
    $timeStamp = $Event.TimeGenerated
    Write-Host "O Arquivo '$name' foi $changeType em $timeStamp" -fore green
    Out-File -FilePath \\TOTVSfix\ERP11\log\INFOFAST.txt -Append -InputObject "O Arquivo '$name' foi $changeType em $timeStamp"}

    Register-ObjectEvent $fsw Deleted -SourceIdentifier FileDeleted -Action {
    $name = $Event.SourceEventArgs.Name
    $changeType = $Event.SourceEventArgs.ChangeType
    $timeStamp = $Event.TimeGenerated
    Write-Host "O Arquivo '$name' foi $changeType em $timeStamp" -fore red
    Out-File -FilePath \\TOTVSfix\ERP11\log\INFOFAST.txt -Append -InputObject "The file '$name' was $changeType at $timeStamp"}

    Register-ObjectEvent $fsw Changed -SourceIdentifier FileChanged -Action {
    $name = $Event.SourceEventArgs.Name
    $changeType = $Event.SourceEventArgs.ChangeType
    $timeStamp = $Event.TimeGenerated
    Write-Host "O arquivo '$name' foi $changeType em $timeStamp" -fore white

    Ele está funcionando OK, ele está cumprindo o objetivo dele.

    Porém eu queria que depois que ele fizesse a verificação dos arquivos, ele me mandasse um e-mail com o informativo.

    Eu até consegui fazer ele mandar o e-mail, mas para isso eu tive que fazer um novo script. Eu não consegui fazer isso no mesmo script.

    Outra questão é que ele sempre salva os logs dentro de um mesmo .txt e eu queria que ele sepasse os logs por dia, e não deixasse tudo junto.

    Alguém sabe como fazer isso?

    terça-feira, 23 de janeiro de 2018 16:32

Todas as Respostas

  • *E eu queria que ele separasse os logs por dia, e não deixasse tudo junto*
    terça-feira, 23 de janeiro de 2018 16:33
  • Caro,

    Veja se funciona pra vc

    .
    .
    .
    Register-ObjectEvent $fsw Deleted -SourceIdentifier FileDeleted -Action {
    $name = $Event.SourceEventArgs.Name
    $changeType = $Event.SourceEventArgs.ChangeType
    $timeStamp = $Event.TimeGenerated
    $data = "{0:dd-MM-yy}" -f (Get-Date)
    Write-Host "O Arquivo '$name' foi $changeType em $timeStamp" -fore red
    Out-File -FilePath \\TOTVSfix\ERP11\log\$data.txt -Append -InputObject "The file '$name' was $changeType at $timeStamp"}
    $body = Get-Content -Path \\TOTVSfix\ERP11\log\$data.txt -Raw
    Send-MailMessage -From "sis@empresa.com.br" -to "eu@empresa.com.br" -subject "Relatorio do dia $data" -Body $body -SmtpServer smtp.empresa.com.br
    .
    .
    .

    O arquivo será armazenado com a data de execução gerando um arquivo por data. Ex : 24-01-18.txt

    O cmdlet Send-MailMessage enviará o email para o destinatário com o conteúdo do arquivo .txt gerado.

    quarta-feira, 24 de janeiro de 2018 14:27