Conosco FileWatcher in Windows ma c'è un modo per tenere traccia anche se un utente inserisce solo una directory? Ho appena trovato il codice per l'apertura, la modifica e l'eliminazione dei file.
$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = "C:\inetpub"
$watcher.Filter = "*.*"
$watcher.IncludeSubdirectories = $true
$watcher.EnableRaisingEvents = $true
$action = { $path = $Event.SourceEventArgs.FullPath
$changeType = $Event.SourceEventArgs.ChangeType
$logline = "$(Get-Date), $changeType, $path"
Add-content "C:\log.txt" -value $logline
}
Register-ObjectEvent $watcher "Created" -Action $action
Register-ObjectEvent $watcher "Changed" -Action $action
Register-ObjectEvent $watcher "Deleted" -Action $action
Register-ObjectEvent $watcher "Renamed" -Action $action
while ($true) {sleep 5}
$watcher.NotifyFilter
predefinito FileName, DirectoryName, LastWrite
per me. Dai un'occhiata [System.IO.NotifyFilters].GetEnumValues()
, prova almeno $watcher.NotifyFilter = $watcher.NotifyFilter -bOR [System.IO.NotifyFilters]::LastAccess
. Dai un'occhiata $watcher | Get-Member -MemberType Event
, prova a registrare tutti i tipi di eventi.