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 ^^" :
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
Partager