Ho avuto l’esigenza di creare uno script che potesse monitorare una certa cartella per la presenza di nuovi file ed inviarmeli via mail in caso affermativo. Ho quindi creato il seguente file e salvato in un file .PS1 (Powershell)

<#
Modificare i seguenti parametri secondo le proprie esigenze ed eseguire questo script tramite pianificazione windows
con la frequenza che si desidera.

Path = Percorso dove deve verificare la presenza di nuovi file
SMTPServer = nome server smtp per inviare la posta
From = indirizzo email del mittente
To = indirizzo email del destinatario
SMTPPort = porta SMTP da usare per invio mail
Subject = Oggetto della mail
Password = La password di autenticazione per l'invio mail
Minuti = quanti minuti devono esserci di differenza tra l'ultimo file rilevato per capire quali sono i file recenti. 
#>

$Path = "C:\test\"
$SMTPServer = "mail.tuoprovder.it"
$From = "mailmittente@email.com"
$To = "maildestinatario@email.com"
$SMTPPort = "25"
$Subject = "Nuovo/i file presente"
$Password = "passwordperinvioposta"
$credentials = new-object Management.Automation.PSCredential $from, ($password | ConvertTo-SecureString -AsPlainText -Force)
$minuti = "3"

$SMTPMessage = @{
    To = $To
    From = $From
	Subject = "$Subject in $Path"
    Smtpserver = $SMTPServer
    port = $SMTPPort
    Credential = $credentials
}

$File = Get-ChildItem $Path | Where { $_.LastWriteTime -ge [datetime]::Now.AddMinutes(-$minuti) }
If ($File)
{	$percorso = $path + $file
    $SMTPBody = "`nI seguenti file sono stati aggiunti/modificati di recente:`n`n"
	$File | ForEach { $SMTPBody += "$($_.FullName)`n" }
	Send-MailMessage @SMTPMessage -Body $SMTPBody -Attachments $percorso
	
}

Poi ho creato un file Batch (.bat) da richiamare tramite le operazioni pianificate di windows in modo tale da automatizzare il controllo e l’invio dei nuovi file. Ecco il codice del file .bat (es. controllanuovifile.bat)

@echo off
REM Togli la scritta REM davanti alle righe che ti interessano per eseguire i relativi comandi. Modifica ogni riga secondo la tua esigenza.
REM.
REM Powershell.exe -executionpolicy remotesigned -File "C:\Scripts\nomedelloscript1.ps1"
REM Powershell.exe -executionpolicy remotesigned -File "C:\Scripts\nomedelloscript2.ps1"
REM Powershell.exe -executionpolicy remotesigned -File "C:\Scripts\nomedelloscript3.ps1"

Creare un’operazione pianificata di Windows e richiamare il file .bat

Categorie: Android