Bonjour,
J'essaye un petit script pour m'envoyer un message sur mon serveur Windows Server 2012. Il est tout simple le voici:
$Message = Get-Process |
Sort-Object CPU -Descending |
Select-Object -First 10 -Property @{Label = "Nom" ; Expression = {$_.Name}},
@{Label = "ID" ; Expression = {$_.ID}},
@{Label = "CPU" ; Expression ={($_.CPU).ToString("#.##")}}
# Ici je transforme la variable en html mais comme fragment
$Message = $Message | ConvertTo-Html -Fragment
# Ici je définis une feuille de style interne ... pour que cela soit zoli
$Head = @"
<style>
body {font-family: "Arial";font-size: 8pt;color: #4C607B}
th, td {border: 1px solid #e57300;border-collapse: collapse;padding: 5px}
th {font-size: 1.2em;text-align: left;background-color: #003366;color: #ffffff}
td {color: #000000}
.even { background-color: #ffffff}
.odd { background-color: #bfbfbf}
</style>
"@
# corps du mail
$Body = @"
<html>
<body>
<p>Bonjour,<br />
Voici le resultat de Get-Process<br />
<p>$Message</p>
</p>
</body>
</html>
"@
$FinalMail = ConvertTo-HTML -Head $Head -Body $Body -PostContent "Mail généré le : $(Get-Date -Format "dddd dd-MM-yyyy à hh:mm:ss")"
$MailParams =@{
smtpServer = "toto.smtp.fr"
from = "aa@aa.fr"
to = "bb@bb.fr"
subject = "TEST"
body = $FinalMail
BodyAsHTML = $true
}
# Ca c'était juste pour voir le résultat
$FinalMail | Out-File 'C:\LOGON-SCRIPT$\Filtrage des Ordinateurs Inactifs\a.htm'
ii 'C:\LOGON-SCRIPT$\Filtrage des Ordinateurs Inactifs\a.htm'
# et l'envoi par mail qui utilise le splat
Send-MailMessage @MailParams
La génération du HTM c'est ok par contre j'ai une erreur pour l'envoi du mail:
Send-MailMessage : Impossible de convertir «System.Object[]» en type «
System.String», requis par le paramètre «Body». La méthode spécifiée n'est pas
prise en charge.
Au caractère C:\LOGON-SCRIPT$\Filtrage des Ordinateurs Inactifs\test.ps1:51 :
18
+ Send-MailMessage @MailParams
+ ~~~~~~~~~~~
+ CategoryInfo : InvalidArgument : (:) [Send-MailMessage], Parame
terBindingException
+ FullyQualifiedErrorId : CannotConvertArgument,Microsoft.PowerShell.Comma
nds.SendMailMessage