Bird
Raised Fist0
PowerShellscripting~5 mins

Monitoring scripts with email alerts in PowerShell - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the main purpose of a monitoring script with email alerts?
To automatically check system or application status and send an email notification if an issue or specific condition is detected.
Click to reveal answer
beginner
Which PowerShell cmdlet is commonly used to send email alerts in monitoring scripts?
The <code>Send-MailMessage</code> cmdlet is used to send email messages from PowerShell scripts.
Click to reveal answer
intermediate
What parameters are essential for the <code>Send-MailMessage</code> cmdlet to send an email?
You need -From, -To, -Subject, -Body, and -SmtpServer parameters at minimum.
Click to reveal answer
intermediate
How can you check if a service is running in a PowerShell monitoring script?
Use Get-Service -Name 'ServiceName' and check the Status property to see if it is 'Running'.
Click to reveal answer
intermediate
Why is it important to include error handling in monitoring scripts with email alerts?
Error handling ensures the script can catch problems and still send alerts or log issues instead of silently failing.
Click to reveal answer
Which PowerShell cmdlet sends an email alert?
ASend-MailMessage
BSend-EmailAlert
CSend-Alert
DSend-Notification
What parameter specifies the SMTP server in Send-MailMessage?
A-Server
B-SmtpServer
C-MailServer
D-EmailServer
Which property do you check to see if a service is running?
ARunning
BState
CStatus
DCondition
What is a good reason to send email alerts from monitoring scripts?
ATo increase CPU usage
BTo slow down the system
CTo avoid logging errors
DTo notify admins immediately about issues
Which of these is NOT required for Send-MailMessage to send an email?
A-Password
B-To
C-From
D-Subject
Describe how you would create a simple PowerShell script to monitor a service and send an email alert if it is stopped.
Think about checking status first, then sending email if needed.
You got /4 concepts.
    Explain why monitoring scripts with email alerts are useful in managing IT systems.
    Consider the benefits of automation and fast alerts.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of using email alerts in PowerShell monitoring scripts?
      easy
      A. To notify administrators immediately when a problem occurs
      B. To slow down the script execution
      C. To store logs locally on the computer
      D. To increase the script's runtime

      Solution

      1. Step 1: Understand monitoring scripts

        Monitoring scripts check system health or status automatically without manual checks.
      2. Step 2: Role of email alerts

        Email alerts send notifications immediately when an issue is detected, so admins can act fast.
      3. Final Answer:

        To notify administrators immediately when a problem occurs -> Option A
      4. Quick Check:

        Alerts = Notify admins fast [OK]
      Hint: Email alerts = instant problem notification [OK]
      Common Mistakes:
      • Thinking email alerts slow scripts
      • Confusing alerts with local log storage
      • Assuming alerts increase runtime
      2. Which of the following is the correct syntax to send an email alert using PowerShell's Send-MailMessage cmdlet?
      easy
      A. Send-MailMessage -Sender 'admin@example.com' -Receiver 'user@example.com' -Title 'Alert' -Content 'Issue detected' -Server 'smtp.example.com'
      B. Send-Mail -From 'admin@example.com' -To 'user@example.com' -Subject 'Alert' -Body 'Issue detected' -Server 'smtp.example.com'
      C. Send-MailMessage -From 'admin@example.com' -To 'user@example.com' -Subject 'Alert' -Body 'Issue detected' -SmtpServer 'smtp.example.com'
      D. Send-Email -From 'admin@example.com' -To 'user@example.com' -Subject 'Alert' -Body 'Issue detected' -SmtpServer 'smtp.example.com'

      Solution

      1. Step 1: Identify correct cmdlet and parameters

        The correct cmdlet is Send-MailMessage with parameters -From, -To, -Subject, -Body, and -SmtpServer.
      2. Step 2: Check each option's syntax

        Send-MailMessage -From 'admin@example.com' -To 'user@example.com' -Subject 'Alert' -Body 'Issue detected' -SmtpServer 'smtp.example.com' uses correct cmdlet and parameter names. Others use incorrect cmdlet names or parameter names.
      3. Final Answer:

        Send-MailMessage -From 'admin@example.com' -To 'user@example.com' -Subject 'Alert' -Body 'Issue detected' -SmtpServer 'smtp.example.com' -> Option C
      4. Quick Check:

        Send-MailMessage + correct params = A [OK]
      Hint: Send-MailMessage with -From, -To, -Subject, -Body, -SmtpServer [OK]
      Common Mistakes:
      • Using wrong cmdlet names like Send-Mail or Send-Email
      • Incorrect parameter names like -Sender or -Receiver
      • Missing -SmtpServer parameter
      3. What will be the output of this PowerShell snippet?
      if ((Get-Process -Name 'notepad' -ErrorAction SilentlyContinue) -eq $null) {
        Send-MailMessage -From 'alert@example.com' -To 'admin@example.com' -Subject 'Notepad not running' -Body 'Please start Notepad.' -SmtpServer 'smtp.example.com'
        'Alert sent'
      } else {
        'Notepad is running'
      }
      medium
      A. No output because Send-MailMessage blocks output
      B. 'Alert sent' if Notepad is not running, else 'Notepad is running'
      C. Syntax error due to missing parentheses
      D. Always 'Alert sent' regardless of Notepad status

      Solution

      1. Step 1: Understand the condition

        The script checks if Notepad process exists; if not found, condition is true.
      2. Step 2: Analyze the if-else branches

        If Notepad is not running, it sends an email and outputs 'Alert sent'. Otherwise, outputs 'Notepad is running'.
      3. Final Answer:

        'Alert sent' if Notepad is not running, else 'Notepad is running' -> Option B
      4. Quick Check:

        Process check controls output [OK]
      Hint: Check process null means send alert, else normal message [OK]
      Common Mistakes:
      • Assuming Send-MailMessage blocks output
      • Thinking condition always true
      • Confusing error handling with syntax error
      4. You wrote this script to send an email alert if disk space is low:
      $freeSpace = (Get-PSDrive C).Free
      if ($freeSpace -lt "100MB") {
        Send-MailMessage -From 'alert@example.com' -To 'admin@example.com' -Subject 'Low Disk Space' -Body 'Disk space below 100MB' -SmtpServer 'smtp.example.com'
      }

      But no email is sent even when disk space is low. What is the likely problem?
      medium
      A. The if condition should use -gt instead of -lt
      B. Get-PSDrive does not return Free space
      C. Send-MailMessage requires -Port parameter
      D. 100MB is not a valid size unit in PowerShell comparison

      Solution

      1. Step 1: Check the size comparison

        PowerShell does not recognize '100MB' as a valid number; it must be converted to bytes.
      2. Step 2: Understand Get-PSDrive output

        Get-PSDrive returns Free space in bytes as a number, so comparing to '100MB' string fails silently.
      3. Final Answer:

        100MB is not a valid size unit in PowerShell comparison -> Option D
      4. Quick Check:

        Size units must be numeric bytes [OK]
      Hint: Use numeric bytes, not '100MB' string in comparisons [OK]
      Common Mistakes:
      • Assuming Get-PSDrive Free is not available
      • Thinking Send-MailMessage needs -Port always
      • Confusing less than and greater than operators
      5. You want to create a PowerShell monitoring script that checks CPU usage every 5 minutes and sends an email alert if usage exceeds 80%. Which approach correctly implements this?
      hard
      A. Use a loop with Start-Sleep 300, check CPU with Get-Counter, send email if over 80%
      B. Run Get-Counter once, then send email immediately without looping
      C. Use a scheduled task to run the script every hour, check CPU, send email if over 80%
      D. Use a loop with Start-Sleep 60, check CPU once, then exit

      Solution

      1. Step 1: Understand monitoring frequency

        Checking CPU every 5 minutes requires a loop with a 300-second (5-minute) sleep between checks.
      2. Step 2: Use Get-Counter and conditional email

        Get-Counter can measure CPU usage; if usage > 80%, Send-MailMessage sends alert.
      3. Step 3: Evaluate options

        Use a loop with Start-Sleep 300, check CPU with Get-Counter, send email if over 80% uses loop with Start-Sleep 300 and conditional email, matching requirements. Others either run once or wrong intervals.
      4. Final Answer:

        Use a loop with Start-Sleep 300, check CPU with Get-Counter, send email if over 80% -> Option A
      5. Quick Check:

        Loop + 5 min sleep + CPU check + email = C [OK]
      Hint: Loop with 300s sleep and conditional email alert [OK]
      Common Mistakes:
      • Running check only once without loop
      • Using wrong sleep duration
      • Confusing scheduled task frequency with script loop
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard