Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Charger l'ensemble .NET de WinSCP
- Add-Type -Path "WinSCPnet.dll"
- # Configurer les options de session
- $sessionOptions = New-Object WinSCP.SessionOptions -Property @{
- Protocol = [WinSCP.Protocol]::Ftp
- HostName = "xxxxxx"
- UserName = "xxxxxx"
- Password = "xxxxxx"
- }
- $sessionOptions.AddRawSettings("ProxyHost", "xxxxxx")
- $sessionOptions.AddRawSettings("ProxyPort", "xxxxxx")
- $sessionOptions.AddRawSettings("FtpProxyLogonType", "5")
- $session = New-Object WinSCP.Session
- try
- {
- # Connecter
- $session.Open($sessionOptions)
- # Votre code
- ### FONCTION ENVOI DE MAIL ###
- Function SendMail
- {
- $EXPEDITEUR = "xxxxxx"
- $DESTINATAIRE = "xxxxxx","xxxxxx"
- $SUJET = "xxxxxx"
- $SERVEUR_SMTP = "xxxxxx"
- $CORPS_MAIL = "xxxxxx"
- #$PJ = 'c:\script\Rapport.txt' # si Pièce jointe
- #$attachment = New-Object System.Net.Mail.Attachment($PJ) #Pour la Pièce jointe
- $Mail_Message = New-Object System.Net.Mail.MailMessage #on créé l'objet
- $Mail_Message.From = $EXPEDITEUR
- $Mail_Message.Subject = $SUJET
- $Mail_Message.Body = $CORPS_MAIL
- #$Mail_Message.Attachments.Add($PJ)
- $Mail_Adresses = $Mail_Message.To
- if ($DESTINATAIRE -is "System.Array") #Si plusieurs adresses
- {
- foreach ($Adr in $DESTINATAIRE) #on rajoute chaque adresse
- {
- $Mail_Adress = New-Object System.Net.Mail.MailAddress $Adr
- $Mail_Adresses.Add($Mail_Adress)
- }
- }
- else
- {
- $Mail_Adress = New-Object System.Net.Mail.MailAddress $DESTINATAIRE
- $Mail_Adresses.Add($Mail_Adress)
- }
- $SMTPClient = New-Object Net.Mail.SmtpClient($SERVEUR_SMTP, xxxxxx) #serveur SMTP et Port
- $SMTPClient.EnableSsl = $false #si SSL activé ou non - Importer le certificat avant?
- $SMTPClient.Credentials = New-Object System.Net.NetworkCredential("xxxxxx", "xxxxxx"); #ICI Login et password du compte mail
- $SMTPClient.Send($Mail_Message) #l'envoi du mail
- }
- ### Déclaration variables ###
- $log="xxxxxx" #
- $dateverif = get-date -format "yyyy_MM_dd_-_HH_mm_ss"
- ### VERIFICATION DES COMMANDES EN ATTENTE ###
- $Date=(Get-Date).AddMinutes(-2)
- #$remotePath = "xxxxxx"
- #$H =Dir $remotePath
- #$path='xxxxxx'
- #$H=Dir $Path |
- $H=$session.Open
- Where-Object {! $_.PsIsContainer}|
- Group-Object -Property {$_.LastWriteTime -ge $date} -AsHashTable -AsString
- $oldOfs,$ofs=$ofs,' , '
- if ($H -eq $null) # Aucun fichier dans le répertoire à surveiller
- {
- echo "$dateverif Aucun fichier trouvé" >> $log
- exit 0
- }
- if (($H).Count -gt "0") # Présence de nouveaux fichiers
- {
- Write-Warning "xxxxxx"
- "$($H.True)"
- echo "$dateverif xxxxxx" >> $log
- echo $H >>$log
- SendMail #Envoi du mail d'alerte
- exit 0
- }
- else # Pas de nouveaux fichiers
- {
- Write-Warning "xxxxxx"
- "$($H.False)"
- echo "$dateverif Aucun nouveau rapport" >> $log
- exit 0
- }
- $ofs=$oldOfs
- }
- finally
- {
- $session.Dispose()
- }
Advertisement
Add Comment
Please, Sign In to add comment