【问题标题】:How to find the file that triggered a FileSystemWatcher event如何找到触发 FileSystemWatcher 事件的文件
【发布时间】:2018-08-07 11:49:21
【问题描述】:

我正在使用 FileSystemWatcher 检查目标目录中的更改文件。但是,我似乎无法访问有关触发事件的文件的信息,或者我根本不知道如何。

$Action = {
    # Output name of trigger file here.
}

$FileSystemWatcher = New-Object System.IO.FileSystemWatcher $TargetDirectory
Register-ObjectEvent -InputObject $FileSystemWatcher -EventName Changed -Action $Action

当我在多个目标目录中等待事件时,我无法选择使用同步等待。

我做错了吗?

【问题讨论】:

  • 我认为就像Write-Host $Event.SourceEventArgs.Name 一样简单。试试看。
  • 它有效,但奇怪的是,该事件似乎只针对内容更改的目录触发。我只得到目录的名称,而不是被移动的文件的名称,并且在文件重命名的情况下没有任何事件。
  • 似乎我的错误是我预计路径更改会触发“已更改”事件。

标签: powershell filesystemwatcher


【解决方案1】:

使用此代码时:

$Action = {
    # Output name of trigger file here.
    Write-Host $Event.SourceEventArgs.FullPath
}

$TargetDirectory = "c:\temp\fsw"
$FileSystemWatcher = New-Object System.IO.FileSystemWatcher $TargetDirectory
Register-ObjectEvent -InputObject $FileSystemWatcher -EventName Changed -Action $Action

我得到了正在更改的文件的完整路径。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    相关资源
    最近更新 更多