Envoyer un email d'alerte à partir de l'analyseur de Performances à l'aide de PowerShell script

J'ai créé une alerte dans l'analyseur de Performances (Windows Server 2008 R2) qui devrait être déclenché à chaque fois qu' \Processeur(_Total)\% Temps Processeur est au-Dessus de 10 (une petite valeur juste pour garantir que la condition d'envoi de l'alerte est toujours respecté). Vous pouvez voir l'Alerte propriétés de Tâche dans l'image.

Envoyer un email d'alerte à partir de l'analyseur de Performances à l'aide de PowerShell script

En outre, j'ai également créé une nouvelle tâche dans le Planificateur de Tâches, qui sera exécuté si l'utilisateur est connecté ou pas, et il sera exécuté avec des privilèges plus élevés. L'élément déclencheur de cette tâche a les propriétés suivantes:

  • Commencer la tâche: Sur un événement
  • Paramètres De Base:
  • Journal: Système
  • Source: Processeur

Les Actions (et c'est la partie que je ne sais pas si c'est correct) avec les paramètres suivants:

  • Action: lancer un programme
  • Programme/script: le chemin vers un script PowerShell pour envoyer un courriel.

Le PowerShell code est le suivant ($nom, $date, $compteur, $seuil, $valeur sont censés venir à partir de l'analyseur de Performances ensemble de collecteurs de données d'alerte propriétés de tâche, comme dans l'image ci-dessus):

function SendMail ($name, $date, $counter, $threshold, $value) {
  $MailMessage = New-Object Net.Mail.MailMessage
  $MailMessage.To.Add("[email protected]")
  $MailMessage.From = "[email protected]"
  $MailMessage.Subject = "ALERT - Performance Monitor"
  $MailMessage.IsBodyHtml = $True

  $MailMessage.Body = @"
    <html><head></head><body>
    The following counter needs attention:<BR><BR>
    Name: $($name)<BR>
    Date: $($date)<BR>
    Counter: $($counter)<BR>
    Threshold: $($threshold)<BR>
    Actual Value: $($value)<BR>
    <FONT face=Courier>$($html)</FONT>
    <BR>
    --- Automatically generated with SENDMAIL function ---
    </body>
    </html>
"@

  $SmtpClient = New-Object Net.Mail.SmtpClient("blah.bleh")
  $SmtpClient.Send($MailMessage)
}

Une fois la tâche a commencé, j'ai la suite de l'Histoire: la Tâche a Commencé, l'Action a Commencé, et a Créé demander Processus. L'e-mail n'est jamais envoyé.

J'ai essayé d'envoyer un e-mail à l'aide de l'Action: Envoyer un e-mail, et il a bien fonctionné. Personne ne sait ce qui pourrait être mauvais?

Êtes-vous sûr que tous les paramètres sont passé correctement dans le script. Une autre chose est que si vous êtes à l'aide de powershell v3, alors vous pouvez utiliser envoyer-mailmessage applet de commande -stackoverflow.com/a/17456077/581922
Entendez-vous les paramètres $nom, $date, etc? Si oui, comment puis-je vérifier? Si vous faites référence au paramètre comme le courrier électronique, serveur smtp, etc, je suis en utilisant le même que j'ai utilisé dans l'Action: Envoyer un e-mail (avec la différence que, dans le script, mon serveur smtp commence par "SMTP." (Et malheureusement, je ne suis pas en utilisant v3 🙁
Le code que vous avez posté définit une fonction, mais je ne vois pas de vous en appelant cette fonction n'importe où.
Pour le tester, commenter tout et les valeurs de sortie vers un fichier texte.
PSv2 a Envoyez-MailMessage.

OriginalL'auteur Anna | 2013-08-27