2016-10-06 3 views
0

일부 프로그램으로 채워지는 디렉토리가 있습니다. 이 디렉토리를 모니터하고 파일이 디렉토리에 계속 추가되는지 확인하고 싶습니다. 5 분 동안 예를 들어 파일이 디렉토리에 추가되지 않으면 알림을 받고 싶습니다. 파일도 삭제되지만 새로운 파일을 신경 써야합니다.
스크립트는 3 시간마다 약 20 분 동안 실행됩니다. 은 FileSystemWatcher에 대한
코드 :FileSystemWatcher를 사용하여 디렉토리 모니터링

$watcher = New-Object System.IO.FileSystemWatcher 
$watcher.Path = "C:\temp\test" 
$watcher.IncludeSubdirectories = $true 
$watcher.EnableRaisingEvents = $true 

$created = Register-ObjectEvent $watcher "Created" -Action { 
    write-host "Created: $($eventArgs.FullPath)" 
    Get-Date -Format "HH:mm:ss" | Out-File "C:\temp\log.txt" -Append 
} 

내가이 achive 수있는 방법을 모른다, 나는 모든 입력에 대한 감사 해요.

답변

1

PowerShell 스크립트는 지속적으로 실행하고 이벤트를보고하는 데 적합하지 않습니다.

[DateTime] $LastWriteTime = (Get-ChildItem -Path "C:\temp\test" -File | Sort-Object LastWriteTime | Select -Last 1).LastWriteTime 
if ($LastWriteTime -le (Get-Date).AddMinutes(-5)) 
{ 
    Write-Output "No files added in the last 5 minutes" 
    # notify me... 
} 

을하고 5 분마다 실행하려면 Windows 작업 스케줄러에 스크립트를 예약 :

한 가지 방법은 다음과 같이 스크립트를 사용하고 당신이 원하는 달성했다.

디렉토리에서 편집 된 최신 파일을 찾습니다.

당신은 파일이 최근 5 분에 생성되었는지 확인하기 위해 로그 파일을 사용 Task Scheduler를 통해 실행하는 별도의 스크립트를 가질 수있는은 FileSystemWatcher

+0

하지만 일부 파일을 검사하기 전에 제거하면 어떻게됩니까? – Richard

+0

@ 리차드 - 누군가 수동으로 파일을 삭제하면 LastWriteTime도 업데이트되어 문제를 혼동시킬 수 있습니다. 하지만 나는 OP가 항상 그 디렉토리에 쓰여진 파일이 있는지 확인하기를 원한다고 가정합니다. 적용되지 않는 추가 사용 사례는 항상 생각할 수 있습니다. –

+0

스크립트는 24/7이 아닌 약 20 분 동안 만 실행됩니다. 당신이 확인하기 전에 파일이 사라 졌을 가능성이 높지만 항상 새로운 파일이 있는지 확인해야합니다. 나는 해결책을 시험해보고 다시보고 할 것이다. –

1

에 대한 필요가 없습니다.

$log = Get-Content -Path T:\log.txt 
$currentTime = Get-date 
$5minutesAgo = $currentTime.AddMinutes(-5) 
$FileAdded = $false 

foreach($time in $log){ 
    if((get-date $time) -gt $5minutesAgo){ 
     $FileAdded = $true 
    } 
} 

If($FileAdded) { 
    Write-host "File was added in the last 5mins" 
} Else { 
    Write-host "No file added in the last 5mins" 
    # Add in email code here 
} 

이렇게하면 로그 파일을 한 줄씩 살펴보고 시간이 마지막 파일 분 이내인지 확인합니다. 그런 다음 파일이 추가 된 경우 변수 $FileAdded$true으로 설정합니다. 이를 사용하여 전자 메일을 보낼지 여부를 결정할 수 있습니다.

참고 :이 작업을 계속 실행하는 경우 로그 파일을 정기적으로 롤오버하여 처리를 중단 시키십시오. 로그 파일에 날짜를 포함시키지 않으므로 하루에 적어도 한 번 로그 파일을 롤오버해야합니다.

+0

스크립트는 3 시간마다 약 20 분 동안 실행됩니다. 나는 당신의 솔루션을 테스트하고 다시보고 할 것입니다. –

+0

@ N.R. 이걸 시험해 봤어, 어떻게 지내니? – Richard

+0

예 테스트를 마쳤으며 예상대로 작동합니다. 이제 저는 그것을 동료들에게 소개하고 그들이 말하는 것을보아야합니다. –