File Watcher, использующий Windows Powershell для мониторинга нескольких путей - PullRequest
0 голосов
/ 20 ноября 2018

Я создаю скрипт File Watcher Powershell для отслеживания нескольких путей.Мне нужно отслеживать около 6 путей, используя один и тот же скрипт File Watcher.Я видел несколько примеров сценариев в сети ('Powershell FileSystemWatcher для нескольких путей) и собирал сценарий.После кода скрипта:

$i=0 

# list of path of the monitored folders. 

$paths = Get-Content "D:\abc\Folder_monitored_paths.txt"; 

foreach ($path in $paths)  
{ 

$filter = '*.*'   

$fsw = New-Object IO.FileSystemWatcher $path -Property @{IncludeSubdirectories = $true} 

Register-ObjectEvent $fsw Created -SourceIdentifier "$i+folderCreated" -Action { 

$name = $Event.SourceEventArgs.Name 
$changeType = $Event.SourceEventArgs.ChangeType 
$fpath = $Event.SourceEventArgs.FullPath 
$timeStamp = $Event.TimeGenerated 

$logline = "$(Get-Date), $changeType, $fpath, $name"
Add-content "D:\log.txt" -value $logline 


}

$i = $i+1 

}

Я поместил около 3 путей в: $paths = Get-Content "D:\abc\Folder_monitored_paths.txt";

При выполнении кода происходит то, что командная строка немедленно возвращается на экран вывода.После этого, когда я помещаю файлы во все 3 пути, он записывает запись для всех 3 каталогов.При втором запуске, когда я снова помещаю файлы в каталоги, в журнале не регистрируется ни одна запись.Почему это происходит ?Почему не регистрировать записи во второй раз, а также почему командная строка немедленно возвращается обратно?Мне чего-то не хватает / неправильно в коде?

Не имея никакого представления о моих 2 вышеупомянутых запросах.Пожалуйста, помогите.

1 Ответ

0 голосов
/ 22 ноября 2018

Для ОП на основе моего последнего комментария.

$i=0 

# list of path of the monitored folders. 

$paths = Get-Content "D:\temp\Folder_monitored_paths.txt" 

foreach ($path in $paths)  
{ 
    $filter = '*.*'   

    $fsw = New-Object IO.FileSystemWatcher $path -Property @{IncludeSubdirectories = $true} 

    Register-ObjectEvent $fsw Created -SourceIdentifier "$i+folderCreated" `
    -Action { 
                $name = $Event.SourceEventArgs.Name 
                $changeType = $Event.SourceEventArgs.ChangeType 
                $fpath = $Event.SourceEventArgs.FullPath 
                $timeStamp = $Event.TimeGenerated 

                $logline = "$(Get-Date), $changeType, $fpath, $name"
                Add-content "D:\temp\log.txt" -value $logline 
            }

    $i = $i+1 
}

<#
Id     Name            PSJobTypeName   State         HasMoreData     Location             Command                  
--     ----            -------------   -----         -----------     --------             -------                  
1      0+folderCreated                 NotStarted    False                                 ...                     
2      1+folderCreated                 NotStarted    False                                 ...                     
3      2+folderCreated                 NotStarted    False                                 ... 
#>


Get-EventSubscriber -Force | Format-Table -AutoSize
<#
SubscriptionId SourceObject                EventName SourceIdentifier Action                                  HandlerDelegate SupportEvent ForwardEvent
-------------- ------------                --------- ---------------- ------                                  --------------- ------------ ------------
             1 System.IO.FileSystemWatcher Created   0+folderCreated  System.Management.Automation.PSEventJob                        False        False
             2 System.IO.FileSystemWatcher Created   1+folderCreated  System.Management.Automation.PSEventJob                        False        False
             3 System.IO.FileSystemWatcher Created   2+folderCreated  System.Management.Automation.PSEventJob                        False        False
#>

<#
11/20/2018 17:10:31, Created, d:\temp\abcpath0\New Text Document.txt, New Text Document.txt
11/20/2018 17:10:42, Created, d:\temp\abcpath1\New Text Document.txt, New Text Document.txt
11/20/2018 17:10:47, Created, d:\temp\abcpath2\New Text Document.txt, New Text Document.txt
11/20/2018 17:11:08, Created, d:\temp\abcpath0\New folder, New folder
11/20/2018 17:11:13, Created, d:\temp\abcpath1\New folder, New folder
11/20/2018 17:11:18, Created, d:\temp\abcpath2\New folder, New folder
11/20/2018 17:12:29, Created, d:\temp\abcpath0\New folder\New Text Document.txt, New folder\New Text Document.txt
11/20/2018 17:12:34, Created, d:\temp\abcpath1\New folder\New Text Document.txt, New folder\New Text Document.txt
11/20/2018 17:12:41, Created, d:\temp\abcpath2\New folder\New Text Document.txt, New folder\New Text Document.txt
11/20/2018 17:12:46, Created, d:\temp\abcpath0\New folder\New folder, New folder\New folder
11/20/2018 17:12:52, Created, d:\temp\abcpath1\New folder\New folder, New folder\New folder
11/20/2018 17:13:00, Created, d:\temp\abcpath2\New folder\New folder, New folder\New folder
11/20/2018 17:13:29, Created, d:\temp\abcpath0\New Rich Text Document.rtf, New Rich Text Document.rtf
11/20/2018 17:13:42, Created, d:\temp\abcpath1\New Rich Text Document.rtf, New Rich Text Document.rtf
11/20/2018 17:13:47, Created, d:\temp\abcpath2\New Rich Text Document.rtf, New Rich Text Document.rtf
11/21/2018 17:52:39, Created, d:\temp\abcpath0\New Microsoft Excel Worksheet.xlsx, New Microsoft Excel Worksheet.xlsx
11/21/2018 17:52:39, Created, d:\temp\abcpath0\~ew Microsoft Excel Worksheet.tmp, ~ew Microsoft Excel Worksheet.tmp
11/21/2018 17:52:39, Created, d:\temp\abcpath0\New Microsoft Excel Worksheet.xlsx~RF82e46c.TMP, New Microsoft Excel Worksheet.xlsx~RF82e46c.TMP
11/21/2018 17:52:45, Created, d:\temp\abcpath1\New Microsoft Excel Worksheet.xlsx, New Microsoft Excel Worksheet.xlsx
11/21/2018 17:52:48, Created, d:\temp\abcpath2\New Microsoft Excel Worksheet.xlsx, New Microsoft Excel Worksheet.xlsx
11/21/2018 17:52:56, Created, d:\temp\abcpath2\New Bitmap Image.bmp, New Bitmap Image.bmp
11/21/2018 17:53:03, Created, d:\temp\abcpath1\New Bitmap Image.bmp, New Bitmap Image.bmp
11/21/2018 17:53:05, Created, d:\temp\abcpath0\New Bitmap Image.bmp, New Bitmap Image.bmp
#>

Get-EventSubscriber -Force | Unregister-Event -Force
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...