none
Pianificazione attività su Evento di monitoraggio directory RRS feed

  • Domanda

  • Salve,

    sto cercando di capire se il Task Scheduler di Windows Server 2008 R2 possa gestire il monitoraggio dei cambiamenti di una directory e conseguentemente procedere ad eseguire un'attività.

    Non ho trovato molta documentazione in giro e nemmeno qualcuno che lo abbia fatto; ma credo che sia inverosimile che in tutti i registri di eventi non ci sia qualcosa che gestisca un handler su una semplice directory.

    mercoledì 18 luglio 2012 13:00

Risposte

  • Ciao,

    non ho capito esattamente cosa vuoi fare, però di default è possibile solo far eseguire una determinata azione (script/applicazione, invio messaggio di posta elettronica) alla registrazione di un dato ID evento nel registro. Per fare questo è ovviamente necessario abilitare l'auditing per permettere la registrazione dell'evento che ti interessa monitorare (ad esempio per modifiche su file e cartelle specifiche: http://technet.microsoft.com/it-it/library/cc771070(WS.10).aspx ), poi devi seguire queste indicazioni per associare l'attività:

    http://technet.microsoft.com/it-it/library/cc748900.aspx

    mercoledì 18 luglio 2012 15:25
    Moderatore
  • La cosa può essere fatta usando due Task pianificati e uno script in powershell.

    1. Creare task attivato "all'avvio del sistema" che esegue lo script in powershell monitorFS-e-genera-evento.ps1
    2. Creare un secondo task  che come attivazione avrà "Al verificarsi di un evento" dove l'evento è generato dallo scrip powershell

     Il primo task deve essere creato con le seguenti caratteristiche:

    • Esegui indipendentemente dalla connessione degli utenti
    • Esegui con privilegi più elevati
    • Attivazione:All'avvio del sistema
    • Azioni: Avvio programma  C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe  e come Aggiungi argomenti (facoltativo) -noexit -command  c:\admin\monitorFS-e-genera-evento.ps1
    • Impostazioni: deselezionare tutte le checkbox

    Il secondo Task:

    • Esegui indipendentemente dalla connessione degli utenti
    • Esegui con privilegi più elevati
    • Attivazione:Al verificarsi di un evento registro Sistema origine Server  ID evento 12345  (12345 è l'evento generato dallo script)
    #
    # FSW monitor By Gastone Canali
    # Genera l'evento 12345 quando viene modificato un file all'interno del folder monitorato
    # http://www.armadillo.it
    #
    #info http://stackoverflow.com/questions/449993/vb-net-filesystemwatcher-multiple-change-events
    #info http://weblogs.asp.net/ashben/archive/2003/10/14/31773.aspx
    $eventID=12345
    $FolderMonitorato="c:\admin\test"
    $FSW = New-Object System.IO.FileSystemWatcher
    $FSW.Path = $FolderMonitorato
    # monitoraggio subdir disabilitato
    $FSW.IncludeSubdirectories = $false
    # filtro per monitoraggio tipo file es. solo txt '*.txt'
    # '' equivale a tutti i file
    $FSW.Filter= ''
    $FSW.EnableRaisingEvents = $true
     
    
    $action={
       write-eventlog System -source Server -eventid $eventID -message "Il file $($eventArgs.FullPath) è stato  $($Event.SourceEventArgs.ChangeType)"
       # Rimovere il carattere # nella riga seguente  per avere un log su file
       #echo   "Il file $($eventArgs.FullPath) è stato  $($Event.SourceEventArgs.ChangeType)">>c:\temp\_fsw.txt
       
    }
    $changed = Register-ObjectEvent $FSW "Changed" -Action  $action
    $created = Register-ObjectEvent $FSW "Created" -Action  $action
    $deleted = Register-ObjectEvent $FSW "Deleted" -Action  $action
    $renamed = Register-ObjectEvent $FSW "Renamed" -Action  $action
    
    # Deregistra event sottoscritti
    #Unregister-Event $Changed.Id
    #Unregister-Event $created.Id
    #Unregister-Event $deleted.Id
    #Unregister-Event $renamed.Id

    Ho provato il tutto e funziona correttamente, ma ti consiglio di leggere il seguente lin  http://stackoverflow.com/questions/449993/vb-net-filesystemwatcher-multiple-change-events e http://weblogs.asp.net/ashben/archive/2003/10/14/31773.aspx , non utilizzarlo per migliaglia di file e non monitorare folder e subfolder troppo ampi rischi di avere l'event viewer pieno e migliaia di task attivati; insomma da usare con buon senso!

    Ciao Gas


    Gastone Canali >http://www.armadillo.it

    Se alcuni post rispondono al tuo quesito (non necessariamente i miei), ricorda di contrassegnarli come risposta e non dimenticare di contrassegnare anche i post utili . GRAZIE!




    mercoledì 25 luglio 2012 09:50
    Moderatore

Tutte le risposte

  • Ciao,

    non ho capito esattamente cosa vuoi fare, però di default è possibile solo far eseguire una determinata azione (script/applicazione, invio messaggio di posta elettronica) alla registrazione di un dato ID evento nel registro. Per fare questo è ovviamente necessario abilitare l'auditing per permettere la registrazione dell'evento che ti interessa monitorare (ad esempio per modifiche su file e cartelle specifiche: http://technet.microsoft.com/it-it/library/cc771070(WS.10).aspx ), poi devi seguire queste indicazioni per associare l'attività:

    http://technet.microsoft.com/it-it/library/cc748900.aspx

    mercoledì 18 luglio 2012 15:25
    Moderatore
  • quindi parliamo di Event Viewer e non di Task Scheduler come indicato da jangar_ediconsul

    Edoardo Benussi
    Microsoft MVP - Management Infrastructure
    edo[at]mvps[dot]org

    venerdì 20 luglio 2012 17:25
    Moderatore
  • In pratica si tratta sempre del Task Scheduler, solo che si esegue la pianificazione dall'Event Viewer per comodità. Volendo è possibile pianificare l'operazione anche solo da Task Scheduler impostando la voce "Al verificarsi di un evento" nella scheda "Attivazione" di un nuovo task: in questo modo è possibile scegliere un registro e un determinato ID evento o impostare filtri più complessi.
    martedì 24 luglio 2012 09:41
    Moderatore
  • La cosa può essere fatta usando due Task pianificati e uno script in powershell.

    1. Creare task attivato "all'avvio del sistema" che esegue lo script in powershell monitorFS-e-genera-evento.ps1
    2. Creare un secondo task  che come attivazione avrà "Al verificarsi di un evento" dove l'evento è generato dallo scrip powershell

     Il primo task deve essere creato con le seguenti caratteristiche:

    • Esegui indipendentemente dalla connessione degli utenti
    • Esegui con privilegi più elevati
    • Attivazione:All'avvio del sistema
    • Azioni: Avvio programma  C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe  e come Aggiungi argomenti (facoltativo) -noexit -command  c:\admin\monitorFS-e-genera-evento.ps1
    • Impostazioni: deselezionare tutte le checkbox

    Il secondo Task:

    • Esegui indipendentemente dalla connessione degli utenti
    • Esegui con privilegi più elevati
    • Attivazione:Al verificarsi di un evento registro Sistema origine Server  ID evento 12345  (12345 è l'evento generato dallo script)
    #
    # FSW monitor By Gastone Canali
    # Genera l'evento 12345 quando viene modificato un file all'interno del folder monitorato
    # http://www.armadillo.it
    #
    #info http://stackoverflow.com/questions/449993/vb-net-filesystemwatcher-multiple-change-events
    #info http://weblogs.asp.net/ashben/archive/2003/10/14/31773.aspx
    $eventID=12345
    $FolderMonitorato="c:\admin\test"
    $FSW = New-Object System.IO.FileSystemWatcher
    $FSW.Path = $FolderMonitorato
    # monitoraggio subdir disabilitato
    $FSW.IncludeSubdirectories = $false
    # filtro per monitoraggio tipo file es. solo txt '*.txt'
    # '' equivale a tutti i file
    $FSW.Filter= ''
    $FSW.EnableRaisingEvents = $true
     
    
    $action={
       write-eventlog System -source Server -eventid $eventID -message "Il file $($eventArgs.FullPath) è stato  $($Event.SourceEventArgs.ChangeType)"
       # Rimovere il carattere # nella riga seguente  per avere un log su file
       #echo   "Il file $($eventArgs.FullPath) è stato  $($Event.SourceEventArgs.ChangeType)">>c:\temp\_fsw.txt
       
    }
    $changed = Register-ObjectEvent $FSW "Changed" -Action  $action
    $created = Register-ObjectEvent $FSW "Created" -Action  $action
    $deleted = Register-ObjectEvent $FSW "Deleted" -Action  $action
    $renamed = Register-ObjectEvent $FSW "Renamed" -Action  $action
    
    # Deregistra event sottoscritti
    #Unregister-Event $Changed.Id
    #Unregister-Event $created.Id
    #Unregister-Event $deleted.Id
    #Unregister-Event $renamed.Id

    Ho provato il tutto e funziona correttamente, ma ti consiglio di leggere il seguente lin  http://stackoverflow.com/questions/449993/vb-net-filesystemwatcher-multiple-change-events e http://weblogs.asp.net/ashben/archive/2003/10/14/31773.aspx , non utilizzarlo per migliaglia di file e non monitorare folder e subfolder troppo ampi rischi di avere l'event viewer pieno e migliaia di task attivati; insomma da usare con buon senso!

    Ciao Gas


    Gastone Canali >http://www.armadillo.it

    Se alcuni post rispondono al tuo quesito (non necessariamente i miei), ricorda di contrassegnarli come risposta e non dimenticare di contrassegnare anche i post utili . GRAZIE!




    mercoledì 25 luglio 2012 09:50
    Moderatore
  • La soluzione di Fabrizio può essere utiizzabile, ma l'accounting non può essere attivato su una singola directory, inoltre è più complessa la gestione degli event id da monitorare. Concettualmente corretta ma non molto pratica nell'utilizzo.


    Gastone Canali >http://www.armadillo.it

    Se alcuni post rispondono al tuo quesito (non necessariamente i miei), ricorda di contrassegnarli come risposta e non dimenticare di contrassegnare anche i post utili . GRAZIE!

    mercoledì 25 luglio 2012 10:00
    Moderatore
  • In realtà con la mia soluzione è possibile monitorare anche più file e cartelle contemporaneamente utilizzando le SACL degli oggetti (scheda Controllo), basta aver abilitato la voce "Controlla filesystem" in Configurazione computer > Impostazioni di sicurezza > Configurazione avanzata dei criteri di controllo > Criteri di controllo di sistema. E' possibile inoltre specificare se controllare solo la lettura, la scrittura, l'eliminazione ,ecc... per ogni singolo file e/o cartella anche se effettivamente può essere più difficile identificare questi eventi nel registro di sicurezza (bisogna utilizzare un filtro per ID evento 4663 e associarlo al task).
    mercoledì 25 luglio 2012 10:30
    Moderatore