2017-06-09 20 views
0

的信息尋找幫助電源外殼腳本來監視文件夾的文件更改,並打印在控制檯上

我想寫一個實用程序,監視文件夾中的所有文件的變化和打印電源外殼在控制檯上的信息

從下面的問題找到很多幫助,感謝OP和線程中的答案。

Powershell script to run a .bat file when a file is added to a folder

我有一個腳本這樣的事情現在

$folder = '\\{Networkname}\Partner1\' # Enter the root path you want to monitor. 
$filter = '*' # You can enter a wildcard filter here. 

$fsw = New-Object IO.FileSystemWatcher $folder, $filter -Property @{IncludeSubdirectories = $false;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 "The file '$name' was $changeType at $timeStamp" -fore green 
write-host "test" 

} 

當我執行上面的腳本中,我得到異常下面

Register-ObjectEvent : Cannot subscribe to event. A subscriber with source identifier 'FileCreated' already exists. 
At C:\Users\sysadmin\Desktop\FileWatcher.ps1:6 char:21 
+ Register-ObjectEvent <<<< $fsw Created -SourceIdentifier FileCreated -Action { 
    + CategoryInfo   : InvalidArgument: (System.IO.FileSystemWatcher:FileSystemWatcher) [Register-ObjectEvent], 
    ArgumentException 
    + FullyQualifiedErrorId : SUBSCRIBER_EXISTS,Microsoft.PowerShell.Commands.RegisterObjectEventCommand 

我剛開始使用PowerShell爲我需要一個實用程序來監視文件夾中的文件更改,請讓我知道如果在上面的代碼中有任何錯誤,我只是試圖打印該chan控制檯上的ged文件信息。

任何幫助,高度讚賞

謝謝。

回答

0

有幾個問題:

  1. 你運行該腳本兩次在同一個會話中,以便在 事件觀察家已經具有相同名稱的存在。使用 Get-EventSubscriber查看同一個 PowerShell會話中的註冊事件。
  2. 您需要將Register-ObjectEvent cmdlet 中的'FileCreated'事件移至-EventName參數。

-Source-Identifier參數用作一種名稱參數。