簡體   English   中英

System.IO.FileSystemWatcher的Register-ObjectEvent無法正常工作

[英]Register-ObjectEvent of System.IO.FileSystemWatcher not working as expected

我使用powershell腳本來監視文件夾並在創建新文件時獲得通知。

腳本如下

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

### DEFINE ACTIONS AFTER AN EVENT IS DETECTED
    $action = 
    { 
        $path = $Event.SourceEventArgs.FullPath
        $changeType = $Event.SourceEventArgs.ChangeType

        Write-Host "The file '$path' was $changeType at '$(Get-Date)'" -fore green   
    }    
### DECIDE WHICH EVENTS SHOULD BE WATCHED 
    Register-ObjectEvent $watcher "Created" -Action $action
    while ($true) {sleep 5}

即使我手動創建文件或使用.batPHP甚至是python創建文件,它也能正常工作。

它不起作用的唯一方法是當另一個用戶(或會話?)創建文件時。

例如:

我在計算機上創建了一個文件夾,並通過LAN與其他計算機共享了該文件夾。 當文件由我(或我的腳本之一)創建時,該腳本可以正常工作並顯示句子。

如果我使用LAN上的另一台計算機在同一文件夾中添加文件,則無法正常工作。 什么都沒有顯示。

(但是,如果我復制/粘貼其他用戶創建的文件,則腳本正在運行,因此文件本身不是問題)。


我發現這個這個 ,但職位已經過時。

您有解決方法或想法嗎?

更新

手工創建(或復制/粘貼)的文件具有所有者DEBIAN\\root但原始文件具有Unix User\\www-data

也許Powershell(Windows)無法“捕獲”這種用戶,這也許就是為什么甚至沒有創建事件的原因?

嘗試提供共享文件夾的UNC路徑

$watcher.Path = "\\server\share"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM