Я собрал этот сценарий для обнаружения изменений файлов в каталоге, так что всякий раз, когда изменения вступают в силу, измененные файлы сразу же копируются.
Я также настроил уведомление по электронной почте.
Бэкап работает. Я вижу, что всякий раз, когда файл изменяется, он копируется в нужное место назначения, однако я получаю три электронных письма, и журнал robocopy не показывает никаких изменений, что заставляет меня думать, что он записывается три раза при каждом изменении файла. Так что в последний раз, когда он будет написан, изменений, конечно же, не будет.
Ниже вы можете увидеть код, надеюсь, вы поможете мне понять, что происходит.
#The Script
$folder = 'C:\_Using Last Template Approach\' # Enter the root path you want to monitor.
$filter = '' # You can enter a wildcard filter here.
# In the following line, you can change 'IncludeSubdirectories to $false if required.
$fsw = New-Object IO.FileSystemWatcher $folder -Property @{IncludeSubdirectories = $true;NotifyFilter = [IO.NotifyFilters]'FileName, LastWrite'}
Register-ObjectEvent $fsw Changed -SourceIdentifier AutoBackUp -Action {
$path = $Event.SourceEventArgs.FullPath
$changeType = $Event.SourceEventArgs.ChangeType
$timeStamp = $Event.TimeGenerated
$datestamp = get-date -uformat "%Y-%m-%d@%H-%M-%S"
$Computer = get-content env:computername
$Body = "Documents Folders have been backed up"
robocopy "C:\_Using Last Template Approach" G:\BackUp\ /v /mir /xo /log:"c:\RobocopyLog.txt"
Send-MailMessage -To "[email protected]" -From "[email protected]" -Subject $Body -SmtpServer "smtp-mm.me.com" -Body " "
# To stop the monitoring, run the following commands (e.g using PowerShell ISE:
# Unregister-Event AutoBackUp
}
$changeType
, возможно, ответ находится там, и простой if решит его за вас. - person Matt   schedule 18.04.2015