Performans İzleyicisi'nde (Windows Server 2008 R2), İşlemci (_Total) \% İşlemci Süresi 10'un üzerinde olduğunda tetiklenmesi gereken bir uyarı oluşturdum. uyarının gönderilmesi koşulu her zaman karşılanmaktadır). Görüntüdeki Uyarı Görevi özelliklerini görebilirsiniz.PowerShell betiğini kullanarak Performans İzleyicisi'nden e-posta uyarısı gönder
Buna ek olarak, ben de kullanıcı veya olmasın açmış olup olmadığını çalışacaktır Görev Zamanlayıcı yeni bir görev oluşturduk ve en yüksek ayrıcalıklarla çalışır.
- görevi başlayın: Temel
- Giriş: Bu görev için tetikleyici aşağıdaki özelliklere sahiptir Sistemi
- Kaynak: İşlemci
Eylemler (ve bu doğru olup olmadığını bilmiyorum kısmıdır) aşağıdaki ayarları vardır:
- Eylem: Bir program başlatın
- Program/script: PowerShell betiğinin bir e-posta göndermek için yolu.
PowerShell kodu ($, değer yukarıdaki resimde olduğu gibi, uyarı görev özellikleri ayarlamak performans izleyicisi veri toplayıcı gelmesi gerekiyor $ isim, $ tarih $, sayaç, $ eşiği) şudur:
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)
}
Görev başlatıldıktan sonra, aşağıda Geçmişi görüyorum: Görev Başladı, Eylem Başladı ve Oluşturuldu Sor Sürümü. E-posta asla gönderilmemiştir.
Eylemi kullanarak bir e-posta göndermeyi denedim: E-posta gönder, ve iyi çalıştı. Neyin yanlış olabileceğini bilen var mı?
Tüm parametrelerin komut dosyasında doğru şekilde geçtiğinden emin misiniz? Başka bir şey, eğer powershell v3 kullanıyorsanız, o zaman sen-mailmessage cmdlet -http kullanabilirsiniz: //stackoverflow.com/a/17456077/581922 – Mitul
@Mitul: $ name, $ date, etc parametrelerini mi kastediyorsunuz? Eğer öyleyse, nasıl kontrol edebilirim? E-posta, smtp sunucusu vb. Gibi parametreye atıfta bulunuyorsanız, Eylemde kullandığım gibi kullanıyorum: E-posta gönder (komut dosyasında smtp sunucumun "SMTP" ile başlaması arasındaki fark). (Ve maalesef, v3 kullanmıyorum :( – Anna
Gönderdiğiniz kod bir işlevi tanımlar, ancak bu işlevi her yerde aradığınızı görmüyorum. –