2017-08-10 3 views
0

HDDまたはRAMの状態を電子メールで送信しようとしましたが、動作していません。 初めてPowerShellを使用しました。電子メールで警告を送信ディスクまたはRAM

のWindows Server 2012 R2

スクリプト(メモリが低いとき)イベントによってトリガーされ、詳細は、電子メールをお送りになるだろう。

ディスクの統計情報を取得するために私は電子メールにこのイベントを追加し、それがメッセージに表示させることができ、私は

$event Get-EventLog -LogName System | Where-Object {$_.EventID -eq 2013} 

のように名前を与えてみましたどのように

Get-EventLog -LogName System | Where-Object {$_.EventID -eq 2013} 

を使用しますが私はメッセージボディにそれをJavaのように追加する方法がわかりませんまたは

$message.body = $body + $event 

このスクリプトを使ってメールを送信するRKS、

$SMTPServer = "smtp.gmail.com" 
$SMTPPort = "587" 
$Username = "[email protected]" 
$Password = "zxc" 

$to = "[email protected]" 
$cc = "[email protected]" 
$subject = "Low Disk Space" 
$body = "The Server Disk is Low on memory" 

$message = New-Object System.Net.Mail.MailMessage 
$message.Subject = $subject 
$message.Body = $body 
$message.To.add($to) 
$message.Cc.add($cc) 
$message.From = $username 

$smtp = New-Object System.Net.Mail.SmtpClient($SMTPServer, $SMTPPort); 
$smtp.EnableSSL = $true 
$smtp.Credentials = New-Object System.Net.NetworkCredential($Username, $Password); 
$smtp.Send($message) 
Write-Host "Mail Sent" 

私は電子メールアラートは、MSによって廃止されたが、人々はまだ、残念ながら私はそれが動作するように取得していない、それを行う方法を持っていることを読みました。

答えて

2

何かが、あなたがこの上で始めるのに役立つ:

# We first need to know which command to use 
Get-Command '*mail*' 

# We use the splatting technique to provide the parameters 
$Params = @{ 
    SmtpServer = 'smtp.gmail.com' 
    Port  = '587' 
    From  = $username 
    To   = '[email protected]' 
    Cc   = '[email protected]' 
    Subject = 'Low Disk Space' 
    Body  = 'The Server Disk is Low on memory.' 
} 

# Get-Help explains what this CmdLet does 
Get-Help Send-MailMessage 

# Get-Help can also give you examples on how to use the CmdLet 
Get-Help Send-MailMessage -Examples 

# Retrieve only events of the last 24 hours and select the first one 
$Today = Get-Date 
$Past = $Today.AddDays(-1) 
$Event = Get-EventLog -LogName System -After $Past | Where-Object {$_.EventID -eq 6013} | Select-Object -First 1 

# Add the event to the mail body 
$Params.Body += ' ' + $Event.Message 

# Send the mail 
Send-MailMessage @Params 

このスクリプトは、一日一回実行するようにTask-Schedulerに追加することができます。

+0

を必要以上持っていますがだから、私はその正しい完了していない、あなたが投稿このスクリプトにいくつかのより多くのものを追加する必要があります。ユーザー名がありません。あなたが投稿したパスワードまたはこれは、ヘルプメッセージに基づいて調整する必要がある参照です。 – Admir

+0

@Admir彼はあなたにさまざまな機能を説明する出発点を与えています。 – TheIncorrigible1

0
SCHTASKS /Create /RU "SYSTEM" /SC DAILY /ST 17:30 /TN DailyHDDMemReport /TR "powershell -NoProfile -NoLogo -ExecutionPolicy Unrestricted -File 'C:\Temp\file.ps1'" /F 

これはDarkLite1の答えと一緒にSYSTEMとして5:30指定されたPowerShellスクリプトを実行し、毎日のタスクを作成します。

0

多くの執筆の後にスクリプトを作成し、それに取り組んでいますが、スクリプトの後に必要なスクリプトが増えたため、最終的に機能要件によって次のツールの無料オプションが使用されました。

https://www.manageengine.com/network-monitoring/

よろしく

関連する問題