Bird
Raised Fist0
PowerShellscripting~10 mins

Why best practices improve reliability in PowerShell - Test Your Understanding

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to display a message about script reliability.

PowerShell
Write-Output [1]
Drag options to blanks, or click blank then click option'
AWrite-Output "Scripts are unreliable."
B"Scripts that follow best practices are more reliable."
CScripts that follow best practices are more reliable.
Decho Scripts are unreliable
Attempts:
3 left
💡 Hint
Common Mistakes
Forgetting to put the message inside quotes causes errors.
Using echo without quotes outputs unexpected results.
2fill in blank
medium

Complete the code to check if a file exists before reading it.

PowerShell
if (Test-Path [1]) { Get-Content [1] } else { Write-Output "File not found." }
Drag options to blanks, or click blank then click option'
A"C:\data.txt"
B'data.txt'
Cdata.txt
DC:\data.txt
Attempts:
3 left
💡 Hint
Common Mistakes
Not quoting the file path causes errors.
Using single quotes with backslashes can cause escape issues.
3fill in blank
hard

Fix the error in the script that tries to create a directory if it doesn't exist.

PowerShell
if (-Not (Test-Path [1])) { New-Item -ItemType Directory -Path [1] }
Drag options to blanks, or click blank then click option'
A'C:\Logs'
BC:\Logs
C"C:\Logs"
DLogs
Attempts:
3 left
💡 Hint
Common Mistakes
Using unquoted paths causes command failures.
Using single quotes with backslashes can cause unexpected behavior.
4fill in blank
hard

Fill both blanks to create a function that logs messages with timestamps.

PowerShell
function Log-Message {
    param([string]$message)
    $timestamp = Get-Date -Format [1]
    Write-Output "$timestamp - [2]"
}
Drag options to blanks, or click blank then click option'
A"yyyy-MM-dd HH:mm:ss"
B$message
Cmessage
D"MM/dd/yyyy"
Attempts:
3 left
💡 Hint
Common Mistakes
Not quoting the date format string causes errors.
Using 'message' without $ does not insert the variable value.
5fill in blank
hard

Fill all three blanks to filter services that are running and display their names.

PowerShell
$services = Get-Service | Where-Object { $_.Status -eq [1] }
$names = $services | Select-Object -ExpandProperty [2]
$names | ForEach-Object { Write-Output [3] }
Drag options to blanks, or click blank then click option'
A"Running"
BName
C$_
DStatus
Attempts:
3 left
💡 Hint
Common Mistakes
Not quoting 'Running' causes filter failure.
Selecting wrong property or not expanding it causes errors.
Using wrong variable in ForEach-Object outputs nothing.

Practice

(1/5)
1. Why is it important to use clear variable names in PowerShell scripts?
easy
A. It makes the script easier to understand and maintain.
B. It makes the script run faster.
C. It reduces the file size of the script.
D. It automatically fixes syntax errors.

Solution

  1. Step 1: Understand the role of variable names

    Clear variable names describe what data they hold, making the script easier to read.
  2. Step 2: Connect readability to maintenance

    When scripts are easier to understand, fixing or updating them is faster and less error-prone.
  3. Final Answer:

    It makes the script easier to understand and maintain. -> Option A
  4. Quick Check:

    Clear names improve readability [OK]
Hint: Clear names help you and others read scripts easily [OK]
Common Mistakes:
  • Thinking clear names speed up script execution
  • Believing variable names reduce script size
  • Assuming names fix syntax errors automatically
2. Which of the following is the correct way to add a comment in a PowerShell script?
easy
A. // This is a comment
B. /* This is a comment */
C.
D. # This is a comment

Solution

  1. Step 1: Identify PowerShell comment syntax

    PowerShell uses # for single-line comments.
  2. Step 2: Compare options

    # This is a comment uses #, which is correct. Others are from different languages.
  3. Final Answer:

    # This is a comment -> Option D
  4. Quick Check:

    PowerShell comments start with # [OK]
Hint: PowerShell comments start with #, not // or /* [OK]
Common Mistakes:
  • Using // which is for other languages
  • Using which is HTML comment
  • Using /* */ which is for C-style languages
3. What will this PowerShell script output?
try {
  Get-Item 'C:\NonExistentFile.txt'
} catch {
  Write-Output 'File not found'
}
medium
A. File not found
B. An error message about file not found
C. No output
D. The file contents

Solution

  1. Step 1: Understand try-catch behavior

    The script tries to get a file that does not exist, causing an error.
  2. Step 2: Catch block runs on error

    The catch block outputs 'File not found' instead of showing an error.
  3. Final Answer:

    File not found -> Option A
  4. Quick Check:

    Error caught, outputs 'File not found' [OK]
Hint: Try-catch outputs catch message on error [OK]
Common Mistakes:
  • Expecting error message instead of catch output
  • Thinking no output if error occurs
  • Assuming file contents print without file
4. This script is meant to check if a file exists and print a message. What is wrong?
if (Test-Path 'C:\file.txt')
  Write-Output 'File exists'
  Write-Output 'File OK'
else
  Write-Output 'File does not exist'
medium
A. Test-Path is not a valid command
B. Missing braces {} around if and else blocks
C. Write-Output cannot print strings
D. The else keyword is not allowed in PowerShell

Solution

  1. Step 1: Check PowerShell if-else syntax

    PowerShell requires braces {} to group multiple statements in if or else blocks.
  2. Step 2: Identify missing braces

    The script lacks braces, which can cause errors or unexpected behavior.
  3. Final Answer:

    Missing braces {} around if and else blocks -> Option B
  4. Quick Check:

    Braces needed for multi-statement if-else blocks [OK]
Hint: Always use {} for if-else blocks in PowerShell [OK]
Common Mistakes:
  • Thinking Test-Path is invalid
  • Believing Write-Output can't print strings
  • Assuming else is not allowed
5. You want to write a PowerShell script that logs errors to a file and continues running. Which best practice improves reliability the most?
hard
A. Avoid comments to keep the script short
B. Write all code in one long line to avoid confusion
C. Use try-catch blocks with error logging inside the catch
D. Use random variable names to prevent conflicts

Solution

  1. Step 1: Understand error handling importance

    Using try-catch blocks lets the script handle errors gracefully without stopping.
  2. Step 2: Add error logging for troubleshooting

    Logging errors inside catch helps find and fix problems later, improving reliability.
  3. Final Answer:

    Use try-catch blocks with error logging inside the catch -> Option C
  4. Quick Check:

    Error handling with logging improves reliability [OK]
Hint: Try-catch with logging keeps scripts running and traceable [OK]
Common Mistakes:
  • Writing code in one line reduces readability
  • Skipping comments makes maintenance harder
  • Random variable names cause confusion