2017-08-10 8 views
0

J'ai essayé plusieurs Scripts pour envoyer par e-mail l'état du disque dur ou de la RAM mais il ne fonctionne pas, 1ère fois en utilisant PowerShell.Envoyer une alerte par e-mail sur faible disque ou RAM

Windows Server 2012 R2

Script obtiendrait déclenché par l'événement (quand la mémoire est faible) et envoyer l'e-mail avec les détails.

pour obtenir les statistiques de disque i utilisé

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

Comment puis-je ajouter cet événement à l'e-mail et le faire apparaître dans le message, je tentai en lui donnant un nom comme

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

mais Je ne sais pas comment ajouter au corps du message de son pas comme java ou

$message.body = $body + $event 

envoyer e-mail ce script wo 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" 

J'ai lu que les alertes e-mail ont été abandonnées par MS, mais les gens ont encore les moyens de le faire, malheureusement, je n'ai pas eu à travailler.

Répondre

2

quelque chose pour vous aider à démarrer à ce sujet:

# 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 

Ce script peut alors être ajouté à la Task-Scheduler pour exécuter une fois par jour.

+0

Donc, je dois ajouter quelques choses à ce script que vous avez publié, ce ne est pas remplir correctement. Nom d'utilisateur est manquant et le mot de passe ou ce que vous avez posté est une référence que je dois ajuster en fonction des messages d'aide. – Admir

+0

@Admir Il vous donne un point de départ, en expliquant les différentes fonctions. – 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 

Cela va créer une tâche quotidienne qui exécute un script Powershell spécifié à 05h30 en tant que SYSTEM conjointement avec la réponse de DarkLite1.

0

Après avoir écrit beaucoup de scripts et travaillé dessus, en raison de l'augmentation des besoins script après script, l'exigence de fonctionnalité m'a finalement fait utiliser l'option gratuite de l'outil suivant.

a plus que nécessaire

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

Cordialement