2013-09-04 3 views
1

다음 powershell 스크립트를 사용하여 IBM iSeries 공유 폴더에있는 의 새 파일을 모니터하고 있습니다.iSeries 공유에서 Powershell FileSystemWatcher 사용

# 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)입니다.

누구에게도 단서 또는 팁이 있습니까?

추신 : 작은 세부 사항, 나는이 트리거

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

와 함께 작업 sheduler 통해이 스크립트를 실행 할 수 있습니다하지만 먼저 내가 수동으로 스크립트를 실행할 때 작동해야합니다!

+0

좋아, 나는 궁금하다. 이것을 모니터링하려는 목적은 무엇인가? – WarrenT

+0

인쇄물을 출력하기 위해 파일이이 디렉토리로 출력되고 있으며이 파일을 xml로 변환해야합니다. 그것은 투명한 과정이어야합니다. – grmbl

+0

왜 Windows 서버에있는 파일 대신 해당 디렉토리에 파일을 작성합니까? 파일이 실제 Windows 시스템에 있기 때문에 FileSystemWatcher를 크게 도와야합니다. – user2338816

답변

0

.Net FileSystemWatcher 개체를 사용하는 대신
폴더를 폴링하는 작은 C# 콘솔 응용 프로그램을 작성하여이 문제를 해결했습니다.
나는 수동으로 (instsrv.exe)이 프로그램을 서비스로 설치하고 실행 중일 수 있습니다.
코드를 원한다면 PM을 보내주십시오. 그러면 코드를 받아 보겠습니다.

0

대상 디렉토리가 Windows NTFS 드라이브가 아니면 FileSystemWatcher를 작동시키지 못했습니다. 내가 매핑 된 디렉토리의 드라이브 문자를 지정하는 경우 본인은 UNC를 사용하는 경우 난 내가 드라이브를 사용하는 경우 디렉토리 이름이 잘못되었습니다 얻을 노벨 파일 서버에 대해

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

을 얻을

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

수 편지. Novell 드라이브에 대해 UNC를 사용하면 실행되지만 파일 시스템에 대한 변경은 감지하지 못합니다. 로컬 드라이브와 내 네트워크의 Windows 파일 서버에 대해 잘 작동합니다.

+0

우리의 유일한 선택은 파일 폴링을 사용하는 우리 자신의 파일 시스템 워처를 작성하는 것이라고 생각합니다. 지금은 iSeries 공유를 모니터하여 파일을 읽고 로컬로 작성한 다음 해당 폴더에서 감시자를 볼 수있는 소프트웨어를 사용하고 있습니다. 내가 사용하고있는 소프트웨어는 레이아웃을 생성하는 소프트웨어와 동일합니다. (하단 출력 디자이너/변형) 그래서 문제는 해결되지 않지만 적어도 계속 작업 할 수 있습니다 ... – grmbl