IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Envois d'un mail avec une pièce jointe [PowerShell]


Sujet :

Scripts/Batch

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2019
    Messages : 8
    Points : 3
    Points
    3
    Par défaut Envois d'un mail avec une pièce jointe
    Bonjour, dans le cadre d'un projet il faudrait que j'arrive à envoyer une sorte de rapport par mail en envoyant un message texte et deux ou 3 dossiers. J'arrive à envoyer le message mais là où ça bloque c'est avec l’envoie de la pièce jointe.
    Pour le moment j'ai réaliser ça comme script :

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    #On va maintenant envoyer un rapport par mail
    function EmailNotification() {
     
        #Adresse de l'expéditeur
        $Expediteur = "ggggggg@gmail.com"
     
        #Adresse du destinataire
        $Destinataire = "xxxxx@gmail.com"
     
        #Serveur SMTP
        $Serveur = "ns0.ovh.net"
     
        #Objet du message 
        $Objet = "Rapport Hyper-V8"
     
        #Corps du message
        $Corps = "ceci est un test, <br> On verra si cela affiche cette phrase"    
        $File_attachement = "C:\Users\Administrateur\backups\hyper-v" #une variable utiliser pour notre fichier en pièce jointe
        $SMTPclient = new-object System.Net.Mail.SmtpClient $Serveur 
     
        #Spécifier le port SMTP 
        $SMTPClient.port = 587
     
        #Activer la fonction SSL 
        $SMTPclient.EnableSsl = $true
     
        #Informations d'authentification SMTP 
        $SMTPAuthUsername = "aaaaa.fr"
        $SMTPAuthPassword = "zzzzzzz" 
        $SMTPClient.Credentials = New-Object System.Net.NetworkCredential($SMTPAuthUsername,$SMTPAuthPassword)
     
        $Message = new-object System.Net.Mail.MailMessage $Expediteur, $Destinataire, $Objet, $Corps
        $Message.IsBodyHtml = $true
        $attachement = new-object Net.Mail.Attachment($File_Reporting)
        $msg.attachments.add($attachment)
        $SMTPclient.Send($Message) 
        }
        #Appel de la fonction de notification par mail 
        EmailNotification

    avec ce script on me renvoie ces erreurs :

    new-object : Constructeur introuvable. Impossible de trouver un constructeur approprié pour le 
    type Net.Mail.Attachment.
    Au caractère C:\Users\Administrateur\Documents\AutomatisationSauvegardeVMHyperV.ps1:107 : 20
    +     $attachement = new-object Net.Mail.Attachment($File_Reporting)
    +                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : ObjectNotFound: ( : ) [New-Object], PSArgumentException
        + FullyQualifiedErrorId : CannotFindAppropriateCtor,Microsoft.PowerShell.Commands.NewObjec 
       tCommand
     
    Exception lors de l'appel de «Add» avec «1» argument(s): «La valeur ne peut pas être null.
    Nom du paramètre*: item*»
    Au caractère C:\Users\Administrateur\Documents\AutomatisationSauvegardeVMHyperV.ps1:108 : 5
    +     $msg.attachments.add($attachment)
    +     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : NotSpecified: ( : ) [], MethodInvocationException
        + FullyQualifiedErrorId : ArgumentNullException
    Pouvez-vous m'aider s'il-vous-plaît ?

  2. #2
    Membre confirmé Avatar de Superzest 76
    Homme Profil pro
    Automaticien
    Inscrit en
    Septembre 2018
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Automaticien
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2018
    Messages : 144
    Points : 519
    Points
    519
    Par défaut
    Bonjour a toi SLytherin

    Pense au balise stp

    Merci d’avance ! Je me penche sur ton problème
    “Cookie : Anciennement petit gâteau sucré, qu’on acceptait avec plaisir. Aujourd’hui : petit fichier informatique drôlement salé, qu’il faut refuser avec véhémence.”
    N'oubliez pas le si un message vous à aider a résoudre votre problème !

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2019
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    merci, comment ça au balise, excuse je suis un peu fatigué je vois pas ce que j'ai oublié ^^"

  4. #4
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2012
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 281
    Points : 520
    Points
    520
    Par défaut
    salut SLytherin

    tu surlignes ton code et tu cliques sur le # dans la barre au dessus de la zone de saisie !!

    essai en rajoutant System à l'objet sur cette ligne :
    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    $attachement = new-object Net.Mail.Attachment($File_Reporting)
    comme ça :
    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    $attachement = new-object System.Net.Mail.Attachment($File_Reporting)

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2019
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    #On va maintenant envoyer un rapport par mail
    function EmailNotification() {
     
    #Adresse de l'expéditeur
    $Expediteur = "ggggggg@gmail.com"
     
    #Adresse du destinataire
    $Destinataire = "xxxxx@gmail.com"
     
    #Serveur SMTP
    $Serveur = "ns0.ovh.net"
     
    #Objet du message
    $Objet = "Rapport Hyper-V8"
     
    #Corps du message
    $Corps = "ceci est un test, <br> On verra si cela affiche cette phrase"
    $File_attachement = "C:\Users\Administrateur\backups\hyper-v" #une variable utiliser pour notre fichier en pièce jointe
    $SMTPclient = new-object System.Net.Mail.SmtpClient $Serveur
     
    #Spécifier le port SMTP
    $SMTPClient.port = 587
     
    #Activer la fonction SSL
    $SMTPclient.EnableSsl = $true
     
    #Informations d'authentification SMTP
    $SMTPAuthUsername = "aaaaa.fr"
    $SMTPAuthPassword = "zzzzzzz"
    $SMTPClient.Credentials = New-Object System.Net.NetworkCredential($SMTPAuthUsername,$SMTPAuthPassword)
     
    $Message = new-object System.Net.Mail.MailMessage $Expediteur, $Destinataire, $Objet, $Corps
    $Message.IsBodyHtml = $true
    $attachement = new-object Net.Mail.Attachment($File_Reporting)
    $msg.attachments.add($attachment)
    $SMTPclient.Send($Message)
    }
    #Appel de la fonction de notification par mail
    EmailNotification

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2019
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    je sais pas si ça peut aider mais je te montre tout le script, ce qui a avant n'est pas en lien avec l'erreur mais on sait jamais. Et je viens de tester ce que tu m'as dit et ça ne fonctionne pas, je t'envoie donc le script et l'erreur qu'on me renvoie ^^" :
    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    #On définit le chemin de sauvegarde pour les VM ainsi que le fichier de log
    [String]$BackupPath = "C:\Users\Administrateur\backups\hyper-v"
    [String]$ErrorLog   = "C:\Users\Administrateur\backups\logs-backups.log"
     
     
    #On enregistre la date et heure du début de la procédédure
    $Start = Get-Date -format 'dd/MM/yyyy HH:mm:ss'
    Write-Host = $start - Hyper-V Backups Starting
    #Out-File $ErrorLog -Append
     
    #On supprimer les erreurs du jour d'avant
    Try
    {
        Get-Childitem $ErrorLog -Recurse -Force | Remove-Item -Recurse -Force -ErrorAction Stop
    }
    Catch
    {
        "$(Get-Date) - Error during Get-Childitem or Remove-Item: $($_.Exception.Message)" 
        Return
    }
     
     
    #On va maintenant supprime les éléments précédemment sauvegardés
    Try
    {
        Get-Childitem $BackupPath -Recurse -Force | Remove-Item -Recurse -Force -ErrorAction Stop
    }
    Catch
    {
        "$(Get-Date) - Error during Get-Childitem or Remove-Item: $($_.Exception.Message)" | Out-File $ErrorLog -Append
        Return
    }
     
     
    #On récupère la liste des VM en cours d'exécution et les met en pause
    Try
    {
        Get-VM -ErrorAction Stop | Where-Object {$_.State –eq 'Running'} | Suspend-VM -ErrorAction Stop 
    }
    Catch
    {
        "$(Get-Date) - Error during Get-VM Suspend-VM : $($_.Exception.Message)" 
        Return
    }
     
    #On récupère la liste des VM en pause et les exporte dans le dossier de sauvegarde
    Try
    {
        Get-VM -ErrorAction Stop | Where-Object {$_.State –eq 'Paused'} | Export-VM -ErrorAction Stop -Path $BackupPath
    }
    Catch
    {
        "$(Get-Date) - Error during Export-VM: $($_.Exception.Message)" | Out-File -filepath C:\Backups\Hyper-VBackups.log -Append
        Return
    }
     
    #On récupère la liste des VM en pause et les relance
    Try
    {
        Get-VM -ErrorAction Stop | Where-Object {$_.State –eq 'Paused'} | Resume-VM -ErrorAction Stop
    }
    Catch
    {   
        "$(Get-Date) - Error during Resume-VM: $($_.Exception.Message)" | Out-File $ErrorLog -Append
        Return
    }
     
    #On enregistre la date et heure de fin du processus
    $End = Get-Date -format 'dd/MM/yyyy HH:mm:ss'
    Write-Host = $End - Hyper-V Backups completed in $([Math]::Round((New-TimeSpan $Start $End).TotalMinutes)) minutes.
    #Out-File $ErrorLog -Append
    $TempsTotal = $([Math]::Round((New-TimeSpan $Start $End).TotalMinutes))
     
    #On va maintenant envoyer un rapport par mail
    function EmailNotification() {
     
        #Adresse de l'expéditeur
        $Expediteur = "zzzzzz@gmail.com"
     
        #Adresse du destinataire
        $Destinataire = "zzzzz@gmail.com"
     
        #Serveur SMTP
        $Serveur = "ns0.ovh.net"
     
        #Objet du message 
        $Objet = "Rapport Hyper-V8"
     
        #Corps du message
        $Corps = "ceci est un test, <br> On verra si cela affiche cette phrase"    
        $File_attachement = "C:\Users\Administrateur\backups\hyper-v" #une variable utiliser pour notre fichier en pièce jointe
        $SMTPclient = new-object System.Net.Mail.SmtpClient $Serveur 
     
        #Spécifier le port SMTP 
        $SMTPClient.port = 587
     
        #Activer la fonction SSL 
        $SMTPclient.EnableSsl = $true
     
        #Informations d'authentification SMTP 
        $SMTPAuthUsername = "aaaaa.fr"
        $SMTPAuthPassword = "zzzzzzzz" 
        $SMTPClient.Credentials = New-Object System.Net.NetworkCredential($SMTPAuthUsername,$SMTPAuthPassword)
     
        $Message = new-object System.Net.Mail.MailMessage $Expediteur, $Destinataire, $Objet, $Corps
        $Message.IsBodyHtml = $true
        $attachement = new-object System.Net.Mail.Attachment($File_Reporting)
        $msg.attachments.add($attachment)
        $SMTPclient.Send($Message) 
        }
        #Appel de la fonction de notification par mail 
        EmailNotification

    ce qui suit est ce qu'il se passe lorsque je lance mon script :

    PS C:\Users\Administrateur> C:\Users\Administrateur\Documents\AutomatisationSauvegardeVMHyperV.ps1
    = 10/01/2019 11:26:55 - Hyper-V Backups Starting
    = 10/01/2019 11:27:22 - Hyper-V Backups completed in 0 minutes.
    
    new-object : Constructeur introuvable. Impossible de trouver un constructeur approprié pour le type 
    System.Net.Mail.Attachment.
    Au caractère C:\Users\Administrateur\Documents\AutomatisationSauvegardeVMHyperV.ps1:107 : 20
    +     $attachement = new-object System.Net.Mail.Attachment($File_Reporting)
    +                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : ObjectNotFound: (:) [New-Object], PSArgumentException
        + FullyQualifiedErrorId : CannotFindAppropriateCtor,Microsoft.PowerShell.Commands.NewObjectCommand
     
    Exception lors de l'appel de «*Add*» avec «*1*» argument(s)*: «*La valeur ne peut pas être null.
    Nom du paramètre*: item*»
    Au caractère C:\Users\Administrateur\Documents\AutomatisationSauvegardeVMHyperV.ps1:108 : 5
    +     $msg.attachments.add($attachment)
    +     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
        + FullyQualifiedErrorId : ArgumentNullException

  7. #7
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2012
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 281
    Points : 520
    Points
    520
    Par défaut
    tu va rire mais ta variable $File_Reporting ne contient aucun fichier !!!
    je pense que tu voulais utilisé $File_attachement
    par contre cette variable ne contient que le nom d'un dossier est ça peut pas marcher !!

  8. #8
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2019
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    quel boulet !!!!
    du coup tu me conseil de mettre quoi ?

  9. #9
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2012
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 281
    Points : 520
    Points
    520
    Par défaut
    si j'ai bien compris ton script les log sont dans $ErrorLog, donc voila $ErrorLog
    mais y a pas tous, je vois des info dans C:\Backups\Hyper-VBackups.log
    et d'autre nulle part !!

    après je sais pas trop ce que tu veux dans ton rapport !

  10. #10
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2019
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Le rapport va envoyer un message qui va donner le temps qu'a mis le script à sauvegarder et va envoyer une pièce jointe qui contient les potentielles erreurs.
    Mais ce matin je suis arrivé à ce résultat :


    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    function EmailNotification() {
     
        #Adresse de l'expéditeur
        $Expediteur = "ddddd@gmail.com"
     
        #Adresse du destinataire
        $Destinataire = "dddd@gmail.com"
     
        #Serveur SMTP
        $Serveur = "ns0.ovh.net"
     
        #Objet du message 
        $Objet = "Rapport Hyper-V10"
     
        #Corps du message
        $Corps = "ceci est un test, <br> On verra si cela affiche cette phrase"    
        #$file_attachement = "C:\test\test.txt" 
        $SMTPclient = new-object System.Net.Mail.SmtpClient $Serveur 
     
        #Spécifier le port SMTP 
        $SMTPClient.port = 587
     
        #Activer la fonction SSL 
        $SMTPclient.EnableSsl = $true
     
        #Informations d'authentification SMTP 
        $SMTPAuthUsername = "dddddddd"
        $SMTPAuthPassword = "dddddd" 
        $SMTPClient.Credentials = New-Object System.Net.NetworkCredential($SMTPAuthUsername,$SMTPAuthPassword)
     
        $Message = new-object System.Net.Mail.MailMessage $Expediteur, $Destinataire, $Objet, $Corps
        $Message.IsBodyHtml = $true
        $attachments = new-object System.Net.Mail.Attachment "C:\Users\Administrateur\Documents\test.txt" #($file_attachement)
        $msg.attachments.add("C:\Users\Administrateur\Documents\test.txt")
        $SMTPclient.Send($Message) 
        }
        #Appel de la fonction de notification par mail 
        EmailNotification


    PS
    C:\Users\Administrateur> C:\Users\Administrateur\Documents\AutomatisationSauvegardeVMHyperV.ps1
    Impossible d’appeler une méthode dans une expression Null.
    Au caractère C:\Users\Administrateur\Documents\AutomatisationSauvegardeVMHyperV.ps1:34 : 5
    +     $msg.attachments.add("C:\Users\Administrateur\Documents\test.txt")
    +     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : InvalidOperation : (:) [], RuntimeException
        + FullyQualifiedErrorId : InvokeMethodOnNull

  11. #11
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2019
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    j'ai trouvé la solution pour mon problème, merci à tout ceux qui m'ont aidé !!! je mettrai le script complet quand j'aurais fini !!!

  12. #12
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2019
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    #Ce script va permettre d'automatiser l'externalisation des VM sous Hyper V puis d'envoyer un rapport par
    #mail afin de prévenir des erreurs éventuelles et du temps que la sauvegarde a prit pour s'effectuer 
    #entièrement.
     
    #Voici toutes les variables qu'il y a à modifier au cas par cas
     
    #On définit le chemin de sauvegarde pour les VM ainsi que le fichier de log
    #Attention s'ils ne sont pas créés le script ne fonctionnera pas quoiqu'il arrive
    #A vous d'adapter le nom et le chemin correspondant à votre cas
    [String]$BackupPath = "C:\Users\Administrateur\backups\hyper-v"
    [String]$ErrorLog   = "C:\Users\Administrateur\backups\logs-backups.log"
     
    #Adresse mail de l'expéditeur, ici la mienne
    $LExpediteur = "ffgdgdg@gmail.com"
     
    #Adresse mail du destinataire à qui on souhaite envoyer le rapport,
    #ici mon maître de stage
    $LeDestinataire = "dgdgdfgdfg@gmail.com"
     
    #Serveur SMTP que l'on va utiliser 
    $MonServeur = "<ggwdg<g<g"
     
    #Fichier que l'on va envoyer en pièce jointe
    $MonFichier = "C:\Users\Administrateur\backups\logs-backups.log"
     
    #Corps et objet du mail
    $ObjetMail = "Rapport de sauvegarde -nomduclient " + [System.DateTime]::Now
    $CorpsMail = "Voici le rapport de sauvegarde" 
     
    #Identifiant SMTP
    $SMTPAuthUsername = "dgdgdgdfg"
    $SMTPAuthPassword = "gdgdgdg"
     
     
     
    #On enregistre la date et heure du début de la procédédure
    $Start = Get-Date -format 'dd/MM/yyyy HH:mm:ss'
    Write-Host = $start - Hyper-V Backups Starting
     
     
    #On va maintenant supprime les éléments précédemment sauvegardés
    Try
    {
        Get-Childitem $BackupPath -Recurse -Force | Remove-Item -Recurse -Force -ErrorAction Stop
    }
    Catch
    {
        "$(Get-Date) - Error during Get-Childitem or Remove-Item: $($_.Exception.Message)" | Out-File $ErrorLog -Append
        Return
    }
     
     
    #On récupère la liste des VM en cours d'exécution et les met en pause
    Try
    {
        Get-VM -ErrorAction Stop | Where-Object {$_.State –eq 'Running'} | Suspend-VM -ErrorAction Stop 
    }
    Catch
    {
        "$(Get-Date) - Error during Get-VM Suspend-VM : $($_.Exception.Message)" 
        Return
    }
     
    #On récupère la liste des VM en pause et les exporte dans le dossier de sauvegarde
    Try
    {
        Get-VM -ErrorAction Stop | Where-Object {$_.State –eq 'Paused'} | Export-VM -ErrorAction Stop -Path $BackupPath
    }
    Catch
    {
        "$(Get-Date) - Error during Export-VM: $($_.Exception.Message)" | Out-File -filepath C:\Backups\Hyper-VBackups.log -Append
        Return
    }
     
    #On récupère la liste des VM en pause et les relance
    Try
    {
        Get-VM -ErrorAction Stop | Where-Object {$_.State –eq 'Paused'} | Resume-VM -ErrorAction Stop
    }
    Catch
    {   
        "$(Get-Date) - Error during Resume-VM: $($_.Exception.Message)" | Out-File $ErrorLog -Append
        Return
    }
     
    #On enregistre la date et heure de fin du processus
    $End = Get-Date -format 'dd/MM/yyyy HH:mm:ss'
    Write-Host = $End - Hyper-V Backups completed in $([Math]::Round((New-TimeSpan $Start $End).TotalMinutes)) minutes.
    #Out-File $ErrorLog -Append
    $TempsTotal = $([Math]::Round((New-TimeSpan $Start $End).TotalMinutes))
     
     
     
     
    #On va maintenant envoyer un mail qui fera office de rapport
     
     
    #On ajoute un nouvel objet qui va rassembler nos variables précédentes
    $Mail = new-object System.Net.Mail.MailMessage $LExpediteur, $LeDestinataire, $ObjetMail, $CorpsMail
     
    #On ajoute un nouvel objet qui va associer la variable attachment à notre variable précédement crée,
    #fichier
    $PieceJointe = new-object System.Net.Mail.Attachment $MonFichier
     
    #On va ajouter à notre message, qui a déjà les variables du début, la variable attachment va être associé
    #à une pièce jointe 
    $Mail.Attachments.Add($PieceJointe)
     
    #On va répéter le même schéma pour sécuriser le SMTP
    $SMTPclient = new-object System.Net.Mail.SmtpClient $MonServeur
    $SMTPClient.Credentials = New-Object System.Net.NetworkCredential($SMTPAuthUsername, $SMTPAuthPassword)
     
    #On envoie notre mail
    $SMTPclient.Send($Mail) 
     
    #On supprimer les erreurs du jour
    clear-content "C:\Users\Administrateur\backups\logs-backups2.log"

  13. #13
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2012
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 281
    Points : 520
    Points
    520
    Par défaut
    merci pour ton retour et ton script

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Envoi de mail avec la fonction PHP mail() avec une pièce jointe pdf
    Par aztec dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 08/08/2017, 11h25
  2. envoi d'E-mail avec une pièce jointe
    Par adil54 dans le forum Langage
    Réponses: 4
    Dernier message: 11/07/2012, 13h58
  3. Réponses: 4
    Dernier message: 09/06/2010, 17h44
  4. Réponses: 6
    Dernier message: 14/11/2006, 10h35
  5. Envoi d'un mail avec plusieurs pièces jointes
    Par Wilco dans le forum Composants VCL
    Réponses: 3
    Dernier message: 04/04/2006, 10h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo