2017-04-05 98 views
0

我试图使用此代码来监视文件服务器上的文件名更改。但我只想在扩展更改时触发事件。Powershell:用于文件名更改的FileSystemWatcher

是否有含糖?

### SET FOLDER TO WATCH + FILES TO WATCH + SUBFOLDERS YES/NO 
$watcher = New-Object System.IO.FileSystemWatcher 
$watcher.Path = "E:\" 
# $watcher.Filter = "*.*" 
$watcher.IncludeSubdirectories = $true 
$watcher.EnableRaisingEvents = $true 

$action = { $path = $Event.SourceEventArgs.FullPath 
      $changeType = $Event.SourceEventArgs.ChangeType 
      $Name = $Event.SourceEventArgs.Name 
      $logline = "$(Get-Date), $changeType, $path, $name" 
      Add-content "E:\log.txt" -value $logline 
      } 

Register-ObjectEvent $watcher "Renamed" -Action $action 
while ($true) {sleep 5} 
+0

未来,我建议将powershell标签添加到任何有关PowerShell的问题。这里有许多知识丰富的PowerShell用户,这将帮助他们更快地为您提供帮助! – Persistent13

回答

0

将$ watcher变量中的NotifyFilter属性设置为FileName。

$watcher.NotifyFilter = 'FileName' 

现在该操作只会触发文件名更改。