1

次の 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 共有フォルダーをネットワーク ドライブにマッピングしようとしましたが、うまくいきません。
(10.10.0.120 は AS400 です)

資格情報を使用して何かを行う必要があると確信しています...
奇妙なことは、Windows内から共有フォルダーに完全にアクセスできることです。

誰も私に手がかりやヒントを持っていますか?

PS: 少し詳しく説明します。このトリガーを使用して、タスク シェデュラーを介してこのスクリプトを実行します。

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

しかし、最初に、スクリプトを手動で実行するときに機能する必要があります!

4

2 に答える 2

0


.Net FileSystemWatcher オブジェクトを使用する代わりに、フォルダーをポーリングする小さな C# コンソール アプリケーションを作成することで、この問題を解決しました。このプログラムをサービスとして
手動で(instsrv.exe)インストールしたところ、正常に動作しているようです。
コードが必要な場合は、私に PM を送ってください。コードを取得できるようにします。

于 2013-09-16T12:19:54.210 に答える