2017-11-21 8 views
2

저는 많은 창조적 인 아이디어를 가진 동료가 있지만 PowerShell에는 재능이 없습니다. 그는 폴더가 변경 사항을 정기적으로 확인하기를 원합니다. 새 파일이 폴더에 추가 되 자마자 그는 우편으로 통보 받기를 원합니다. 그래서 PS 스크립트가 필요하다고 생각합니다.PowerShell : 변경 사항이 있는지 폴더를 확인하십시오. 그렇다면 전자 메일을 보내십시오.

나는 이것을하는 방법에 관하여 전혀 몰랐다.

다음 코드를 발견했습니다.이 작업을 수행하기 위해 변경할 수 있습니까?

Param (
    [string]$Path = "C:\Test", 
    [string]$SMTPServer = "SMTP IP", 
    [string]$From = "[email protected]", 
    [string]$To = "[email protected]", 
    [string]$Subject = "New stuff!" 
) 

$SMTPMessage = @{ 
    To   = $To 
    From  = $From 
    Subject = "$Subject at $Path" 
    Smtpserver = $SMTPServer 
} 

$File = Get-ChildItem $Path | Where { $_.LastWriteTime -ge [datetime]::Now.AddMinutes(-1) } 
If ($File) { 
    $SMTPBody = "`nThe following files have recently been added/changed:`n`n" 
    $File | ForEach { $SMTPBody += "$($_.FullName)`n" } 
    Send-MailMessage @SMTPMessage -Body $SMTPBody 
} 

어떤 도움을 주시면 감사하겠습니다.

+0

당신은 변화에 대한 귀하의 폴더를 확인 할 필요가 없습니다. 대신 ['FileSystemWatcher'] (https://mcpmag.com/articles/2015/09/24/changes-to-a-folder-using-powershell.aspx)를 사용하십시오. – Clijsters

+0

도움이 될 것입니다. https://gallery.technet.microsoft.com/scriptcenter/Powershell-FileSystemWatche-dfd7084b – Snak3d0c

답변

1

특정 폴더 및/또는 하위 항목의 변경 사항에 대한 알림을 받으려면 .Net Frameworks FileSystemWatcher 클래스를 사용할 수 있습니다. 이 자동으로 얻을 수있는 좋은 솔루션입니다 동안

Register-ObjectEvent $watcher Created -SourceIdentifier FileCreated -Action { 
    $SMTPBody = "`nThe following file have recently been added/changed:`n`n$($Event.SourceEventArgs.Name)" 
    Send-MailMessage @SMTPMessage -Body $SMTPBody} 
} 

: Register-ObjectEvent를 사용하여 이벤트를 등록,

$pattern = "*.*" 
$watcherProperties = @{ 
    IncludeSubdirectories = $false; 
    NotifyFilter = [IO.NotifyFilters]'FileName, LastWrite' 
    } 
$watcher = New-Object IO.FileSystemWatcher $Path, $pattern -Property @watcherProperties 
그런

, 변경에 대한 알림을받을 수 있고 메일 블록을 추가하여 PowerShell을 가진 새로운 하나의 인스턴스 통지, 무거운 루프없이, 그것은 또한 몇 가지 단점이 있습니다. 이 구성에서는 파일이 변경된 에 대해 하나의 메일을 받게됩니다. 여러 개의 파일이있는 디렉토리를 이동하면 여러 개의 메일이 나옵니다.

당신은 FileSystemWatcher에 대한 자세한 내용을보실 수 있습니다 여기에 S :