powershell脚本监视文件夹中的文件更改并在控制台上打印信息

powershell脚本监视文件夹中的文件更改并在控制台上打印信息,powershell,file-watcher,Powershell,File Watcher,寻求帮助 我正在尝试编写一个实用程序来监视文件夹中的任何文件更改,并在power shell控制台上打印信息 从下面的问题中找到了很多帮助,感谢OP和线程中的答案 我现在有一个这样的脚本 $folder = '\\{Networkname}\Partner1\' # Enter the root path you want to monitor. $filter = '*' # You can enter a wildcard filter here. $fsw = New-Objec

寻求帮助

我正在尝试编写一个实用程序来监视文件夹中的任何文件更改,并在power shell控制台上打印信息

从下面的问题中找到了很多帮助,感谢OP和线程中的答案

我现在有一个这样的脚本

$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
注册ObjectEvent:无法订阅事件。源标识符为“FileCreated”的订阅服务器已存在。
在C:\Users\sysadmin\Desktop\FileWatcher.ps1:6 char:21

+Register ObjectEvent有几个问题:

  • 您已在同一会话中运行了两次脚本,因此 已存在同名的事件观察程序。使用
    获取EventSubscriber
    以查看同一系统中已注册的事件 PowerShell会话
  • 您需要在
    Register-ObjectEvent
    cmdlet中移动“
    FileCreated
    ”事件 到
    -EventName
    参数

  • -源标识符
    参数用作一种名称参数。

    如果要重新运行同一脚本,请在Register ObjectEvent条目前添加以下行:

    Unregister-Event FileCreated -ErrorAction:SilentlyContinue