使用 Powershell 识别程序修改的所有文件

Using Powershell to identify all files modified by a program

我正在寻找一种方法来列出在程序中的某个操作之后被该程序修改的所有文件。我对这个脚本的思考过程是:

  1. 拍摄 H:\ 驱动器上所有对象的快照。
  2. 暂停脚本并转到我正在测试的程序并采取将修改 H:\ 驱动器上的一个或多个文件的操作。
  3. 对 H:\ 驱动器进行第二次快照,并仅输出上次修改时间不同的文件。

我已经有一个 运行 脚本可以检查过去一小时内修改的所有文件,但我想设置一个或多或少是实时的脚本。

到目前为止我有

$before = get-childitem H:\ -recurse
read-host
$after = get-childitem H:\ -recurse
Compare-object -referenceobject $before -differenceobject $after -Property lastwritetime -passThru | 
out-host
powershell -noexit

我只在已修改的第一个子目录(按字母顺序)上得到 return。我没有在任何其他子目录或文件上得到 return。

我会使用 FileSystemWatcher .NET 类型来监视目录。您应该能够使用 Register-ObjectEvent 命令挂钩 Changed 事件并仅在某些内容发生更改时处理目录。