Bird
Raised Fist0
PowerShellscripting~20 mins

$Error automatic variable in PowerShell - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
PowerShell Error Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
💻 Command Output
intermediate
2:00remaining
What does the $Error variable contain after a failed command?
Consider this PowerShell snippet:
$Error.Clear()
Get-Item nonexistentfile.txt
$Error[0]

What will be the output of $Error[0]?
PowerShell
$Error.Clear()
Get-Item nonexistentfile.txt
$Error[0]
AAn empty string because $Error was cleared before the command.
BAn error record object describing the failure to find 'nonexistentfile.txt'.
CThe string 'nonexistentfile.txt' because it is the name of the missing file.
DA null value because $Error does not store errors from Get-Item.
Attempts:
2 left
💡 Hint
Remember that $Error stores error objects from commands that fail, even after clearing.
💻 Command Output
intermediate
2:00remaining
How many errors are stored in $Error after multiple failures?
Run this code:
$Error.Clear()
Get-Item missing1.txt
Get-Item missing2.txt
$Error.Count

What is the value of $Error.Count?
PowerShell
$Error.Clear()
Get-Item missing1.txt
Get-Item missing2.txt
$Error.Count
AAn error because $Error.Count is invalid
B1
C0
D2
Attempts:
2 left
💡 Hint
Each failed command adds one error record to $Error.
📝 Syntax
advanced
2:00remaining
Which option correctly clears the $Error variable?
You want to clear all previous errors stored in $Error. Which command is correct?
A$Error.Clear()
B$Error = $null
CClear-Variable $Error
D$Error.RemoveAll()
Attempts:
2 left
💡 Hint
Think about the method that empties the error collection without removing the variable.
🔧 Debug
advanced
2:00remaining
Why does this code not clear $Error as expected?
Given this code:
$Error = $null
Get-Item missingfile.txt
$Error.Count

What will happen and why?
PowerShell
$Error = $null
Get-Item missingfile.txt
$Error.Count
AIt throws an error because $Error is null and does not have a Count property.
BIt outputs 1 because the error is added to $Error automatically.
CIt outputs 0 because $Error was set to null before the command.
DIt outputs the number of errors from previous commands.
Attempts:
2 left
💡 Hint
Consider what happens when you overwrite $Error with $null.
🚀 Application
expert
2:00remaining
How to retrieve the error message text from the latest error in $Error?
You want to get just the error message string from the most recent error stored in $Error. Which command will output only the error message text?
A$Error[0].Message
B$Error[0].ToString()
C$Error[0].Exception.Message
D$Error[0].ErrorDetails.Message
Attempts:
2 left
💡 Hint
The error record contains an Exception object with the message property.

Practice

(1/5)
1. What does the PowerShell automatic variable $Error store?
easy
A. A list of recent errors encountered during the session
B. All successful command outputs
C. User input history
D. System environment variables

Solution

  1. Step 1: Understand the purpose of $Error

    $Error automatically collects errors that occur during the PowerShell session.
  2. Step 2: Differentiate from other variables

    It does not store outputs, inputs, or environment variables, only errors.
  3. Final Answer:

    A list of recent errors encountered during the session -> Option A
  4. Quick Check:

    $Error stores errors [OK]
Hint: Remember: $Error always holds recent errors [OK]
Common Mistakes:
  • Thinking $Error stores command outputs
  • Confusing $Error with environment variables
  • Assuming $Error stores user inputs
2. Which of the following is the correct way to clear all errors stored in $Error?
easy
A. Clear-Error
B. $Error = $null
C. $Error.Clear()
D. Remove-Variable $Error

Solution

  1. Step 1: Identify the method to clear errors

    $Error is an automatic variable with a method Clear() to empty its contents.
  2. Step 2: Evaluate other options

    Assigning $null or removing the variable does not properly clear the error collection; Clear-Error is not a valid cmdlet.
  3. Final Answer:

    $Error.Clear() -> Option C
  4. Quick Check:

    Use $Error.Clear() to clear errors [OK]
Hint: Use $Error.Clear() to empty errors quickly [OK]
Common Mistakes:
  • Trying to assign $null to $Error
  • Using non-existent cmdlets like Clear-Error
  • Removing $Error variable instead of clearing
3. Given this PowerShell code:
Try { Get-Item 'C:\nonexistentfile.txt' } Catch { Write-Host 'Error caught' }
$latestError = $Error[0]
Write-Output $latestError.Exception.Message

What will be the output?
medium
A. Error caught
B. Cannot find path 'C:\nonexistentfile.txt' because it does not exist.
C. No errors found
D. Get-Item : The term 'Get-Item' is not recognized

Solution

  1. Step 1: Understand the Try-Catch block behavior

    The command tries to get a file that does not exist, causing an error caught by Catch, which writes 'Error caught'.
  2. Step 2: Analyze $Error[0] and output

    $Error[0] holds the most recent error object. Accessing Exception.Message outputs the detailed error message about the missing file.
  3. Final Answer:

    Cannot find path 'C:\nonexistentfile.txt' because it does not exist. -> Option B
  4. Quick Check:

    $Error[0].Exception.Message shows error details [OK]
Hint: Remember $Error[0] is newest error object [OK]
Common Mistakes:
  • Confusing Write-Host output with $Error content
  • Expecting 'Error caught' from Write-Host as output
  • Assuming no error is stored in $Error
4. You run this code:
Get-Item 'C:\missingfile.txt'
Write-Output $Error[0]

But the output is empty. What is the likely reason?
medium
A. The error was cleared before accessing $Error
B. Get-Item succeeded, so no error was recorded
C. $Error variable is not available in this session
D. You must use $Errors instead of $Error

Solution

  1. Step 1: Check if error occurred

    Since the file is missing, Get-Item should cause an error and populate $Error.
  2. Step 2: Consider why $Error[0] is empty

    If $Error was cleared (e.g., by $Error.Clear()) before accessing, it will be empty despite the error.
  3. Final Answer:

    The error was cleared before accessing $Error -> Option A
  4. Quick Check:

    Clearing $Error empties error list [OK]
Hint: Check if $Error was cleared before reading it [OK]
Common Mistakes:
  • Assuming $Error is empty if no error occurred
  • Confusing $Error with $Errors variable
  • Thinking $Error is unavailable in session
5. You want to write a script that tries to get a file, and if it fails, clears the error list and logs the error message only once. Which code snippet correctly uses $Error to achieve this?
hard
A.
Try { Get-Item 'C:\file.txt' } Catch { $Error.Clear(); Write-Output $Error[0].Exception.Message }
B.
Try { Get-Item 'C:\file.txt' } Catch { Write-Output $Error.Clear(); Write-Output $Error[0].Exception.Message }
C.
Get-Item 'C:\file.txt' -ErrorAction SilentlyContinue; Write-Output $Error[0].Exception.Message; $Error.Clear()
D.
Try { Get-Item 'C:\file.txt' } Catch { $msg = $Error[0].Exception.Message; $Error.Clear(); Write-Output $msg }

Solution

  1. Step 1: Identify correct error handling and clearing order

    Try { Get-Item 'C:\file.txt' } Catch { $msg = $Error[0].Exception.Message; $Error.Clear(); Write-Output $msg }
    captures the error message from $Error[0], then clears the error list, then outputs the message.
  2. Step 2: Check other options for mistakes

    Try { Get-Item 'C:\file.txt' } Catch { Write-Output $Error.Clear(); Write-Output $Error[0].Exception.Message }
    clears errors before reading message (wrong order).
    Get-Item 'C:\file.txt' -ErrorAction SilentlyContinue; Write-Output $Error[0].Exception.Message; $Error.Clear()
    does not use Try-Catch and may fail silently.
    Try { Get-Item 'C:\file.txt' } Catch { $Error.Clear(); Write-Output $Error[0].Exception.Message }
    clears errors before reading message, losing the error.
  3. Final Answer:

    Try { Get-Item 'C:\file.txt' } Catch { $msg = $Error[0].Exception.Message; $Error.Clear(); Write-Output $msg } -> Option D
  4. Quick Check:

    Read error before clearing $Error [OK]
Hint: Always read $Error before calling $Error.Clear() [OK]
Common Mistakes:
  • Clearing $Error before reading error message
  • Not using Try-Catch for error handling
  • Expecting $Error to update immediately without Try-Catch
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