簡體   English   中英

在 iSeries 共享上使用 Powershell FileSystemWatcher

[英]Using Powershell FileSystemWatcher on iSeries share

我正在使用以下 powershell 腳本來監視 IBM iSeries 共享文件夾中的新文件。

# variables
#$folder = "\\10.10.0.120\transform\BE\FORM"
#$folder = "C:\Users\Administrator.ALI\Desktop\AS400"
#$folder = "\\nb091002\Temp"
$folder = "I:\"
$filter = "*.txt"
$aswform = "C:\ASWFORM\aswform.exe"

$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = $folder
$watcher.IncludeSubdirectories = $true
$watcher.EnableRaisingEvents = $false
$watcher.NotifyFilter = [System.IO.NotifyFilters]::LastWrite -bor [System.IO.NotifyFilters]::FileName

while($TRUE){
    $result = $watcher.WaitForChanged([System.IO.WatcherChangeTypes]::Changed -bor [System.IO.WatcherChangeTypes]::Renamed -bOr [System.IO.WatcherChangeTypes]::Created, 2000);
    if($result.TimedOut){
        continue;
    }
    Write-Host $result.Name
    #$aswform $folder

}

這似乎在本地文件夾或域共享上運行良好。
我嘗試將 iSeries 共享文件夾映射到網絡驅動器,但它不起作用。

我很確定它必須對憑據做一些事情....
奇怪的是我可以完美地從 Windows 中訪問共享文件夾。

有人對我有任何線索或提示嗎?

PS:小細節,我將使用這個觸發器通過任務調度器運行這個腳本

powershell -NoExit -WindowStyle Hidden -File "C:\ASWFORM\watcher.ps1"

但首先我需要它在手動運行腳本時工作!

除非目標目錄是Windows NTFS驅動器,否則我無法使FileSystemWatcher正常工作。 如果指定映射目錄的驅動器號,則會得到

Exception setting "Path": "The directory name W:\ is invalid."

如果我使用UNC,我會得到

Exception calling "WaitForChanged" with "2" argument(s): "Error reading the \\\\path.to.my.ibm.i\\root\ directory."

如果使用驅動器號,則針對Novell文件服務器,我得到的目錄名稱無效。 如果我對Novell驅動器使用UNC,則它會運行,但不會檢測到文件系統的任何更改。 在本地驅動器上以及在我的網絡上的Windows文件服務器上都可以正常工作。

我通過編寫一個小的C#控制台應用程序來輪詢文件夾來解決該問題
而不是使用.Net FileSystemWatcher對象。
我手動(instsrv.exe)將該程序作為服務安裝,似乎運行正常。
如果您需要驗證碼,請給我發送PM,我會確保您能收到。

嗨 grmbl 我來自 hispan 社區,對不起我的英語,我有同樣的問題,我對你的代碼很感興趣,可以與我所做的代碼進行比較,我知道這不是你問題的答案,但我沒有聲譽積分只是在我的西班牙語個人資料中,所以我無法添加評論,如果您有代碼,請與我分享

"

暫無
暫無

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

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