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
Recall & Review
beginner
What is parameter validation in PowerShell functions?
Parameter validation ensures that the inputs to a function meet specific rules before the function runs. It helps catch errors early and makes scripts more reliable.
Click to reveal answer
beginner
How do you enforce that a parameter must not be empty in PowerShell?
Use the [ValidateNotNullOrEmpty()] attribute before the parameter. It stops the function if the parameter is null or an empty string.
Click to reveal answer
beginner
What does the [ValidateRange(min, max)] attribute do?
It checks that a numeric parameter is within the specified minimum and maximum values. If the input is outside this range, PowerShell throws an error.
Click to reveal answer
beginner
How can you restrict a parameter to accept only specific values?
Use the [ValidateSet('value1', 'value2', ...)] attribute. This limits the parameter to only those listed values, helping avoid typos or invalid inputs.
Click to reveal answer
beginner
What happens if a parameter fails validation in PowerShell?
PowerShell stops running the function and shows an error message explaining which validation rule was broken. This prevents the function from running with bad input.
Click to reveal answer
Which attribute ensures a parameter is not null or empty in PowerShell?
A[ValidateNotNullOrEmpty()]
B[ValidateRange()]
C[ValidateSet()]
D[ValidateLength()]
✗ Incorrect
The [ValidateNotNullOrEmpty()] attribute checks that the parameter is neither null nor an empty string.
What does [ValidateSet('Red','Green','Blue')] do for a parameter?
ASets a default value for the parameter
BChecks if the parameter is a number
CEnsures the parameter is not empty
DLimits the parameter to only 'Red', 'Green', or 'Blue'
✗ Incorrect
It restricts the parameter to accept only the specified values 'Red', 'Green', or 'Blue'.
If a parameter has [ValidateRange(1,10)], what happens if you pass 15?
AThe function runs normally
BThe parameter is set to 10 automatically
CPowerShell throws a validation error
DThe parameter is ignored
✗ Incorrect
Passing a value outside the range causes PowerShell to throw a validation error and stop the function.
Which attribute would you use to ensure a string parameter is not empty?
A[ValidatePattern()]
B[ValidateNotNullOrEmpty()]
C[ValidateSet()]
D[ValidateRange()]
✗ Incorrect
Use [ValidateNotNullOrEmpty()] to ensure the string parameter is not empty or null.
What is the main benefit of parameter validation in scripts?
AIt prevents invalid inputs and errors early
BIt makes scripts run faster
CIt hides errors from users
DIt automatically fixes input mistakes
✗ Incorrect
Parameter validation helps catch bad inputs early, preventing errors during script execution.
Explain how to use parameter validation attributes in a PowerShell function and why they are useful.
Think about how you can stop a function from running if the input is wrong.
You got /4 concepts.
Describe what happens when a parameter fails validation in PowerShell and how it affects the function execution.
Consider what PowerShell does to protect your script from bad inputs.
You got /4 concepts.
Practice
(1/5)
1. What is the main purpose of parameter validation in a PowerShell script?
easy
A. To speed up the script execution
B. To format the output of the script
C. To check input values before the script runs to avoid errors
D. To create new variables automatically
Solution
Step 1: Understand parameter validation role
Parameter validation ensures inputs meet certain rules before the script runs.
Step 2: Identify the main benefit
This prevents errors caused by bad inputs and makes scripts safer.
Final Answer:
To check input values before the script runs to avoid errors -> Option C
Quick Check:
Parameter validation = input checking [OK]
Hint: Validation checks inputs early to prevent errors [OK]
Common Mistakes:
Thinking validation speeds up script
Confusing validation with output formatting
Assuming validation creates variables
2. Which of the following is the correct syntax to validate that a parameter only accepts values from a fixed set: 'Red', 'Green', or 'Blue'?
easy
A. [ValidateSet('Red','Green','Blue')] param([string]$Color)
B. [ValidateRange('Red','Green','Blue')] param([string]$Color)
C. [ValidateNotNullOrEmpty('Red','Green','Blue')] param([string]$Color)
D. [ValidatePattern('Red|Green|Blue')] param([string]$Color)
Solution
Step 1: Identify correct validation attribute for fixed sets
[ValidateSet] restricts input to specific allowed values.
Step 2: Match syntax with attribute usage
The syntax [ValidateSet('Red','Green','Blue')] is correct for this purpose.
Final Answer:
[ValidateSet('Red','Green','Blue')] param([string]$Color) -> Option A
Quick Check:
Fixed set validation = ValidateSet [OK]
Hint: Use ValidateSet for fixed allowed values [OK]
Common Mistakes:
Using ValidateRange for strings
Confusing ValidateNotNullOrEmpty with value restriction
Using ValidatePattern incorrectly for sets
3. What will be the output of this script if called with -Age 25?
function Test-Age {
param(
[ValidateRange(18,30)]
[int]$Age
)
"Age is $Age"
}
Test-Age -Age 25
medium
A. "Age is 18"
B. Error: Parameter validation failed
C. No output
D. "Age is 25"
Solution
Step 1: Check parameter validation range
The parameter $Age must be between 18 and 30 inclusive.
Step 2: Verify input against range
Input 25 is within the range, so validation passes and script runs.
Final Answer:
"Age is 25" -> Option D
Quick Check:
25 in 18-30 range = valid input [OK]
Hint: Check if input fits ValidateRange limits [OK]
Common Mistakes:
Assuming validation fails for valid input
Confusing output with error message
Ignoring the inclusive range
4. Identify the error in this parameter validation code:
function Set-Name {
param(
[ValidateNotNullOrEmpty()]
[string]$Name
)
"Name set to $Name"
}
Set-Name -Name $null
medium
A. The parameter type should be [int] instead of [string]
B. The function will throw a validation error because $Name is null
C. The ValidateNotNullOrEmpty attribute is used incorrectly without parameters
D. The function will accept null and print 'Name set to '
This attribute rejects null or empty string inputs.
Step 2: Analyze input value
The input is $null, which violates the validation rule, causing an error.
Final Answer:
The function will throw a validation error because $Name is null -> Option B
Quick Check:
Null input with ValidateNotNullOrEmpty = error [OK]
Hint: Null or empty inputs fail ValidateNotNullOrEmpty [OK]
Common Mistakes:
Thinking null is accepted
Assuming ValidateNotNullOrEmpty needs parameters
Confusing parameter type requirements
5. You want to create a script parameter $Port that only accepts integers between 1024 and 65535 and cannot be empty. Which parameter validation attributes should you use together?
hard
A. [ValidateRange(1024,65535)][ValidateNotNullOrEmpty()]
B. [ValidateSet(1024,65535)][ValidateNotNullOrEmpty()]
C. [ValidatePattern('^[0-9]{4,5}$')]
D. [ValidateNotNullOrEmpty()][ValidateLength(4,5)]
Solution
Step 1: Choose attribute for numeric range
[ValidateRange(1024,65535)] ensures the integer is within the port number range.
Step 2: Ensure parameter is not empty
[ValidateNotNullOrEmpty()] prevents null or empty input.
Step 3: Combine both for full validation
Using both attributes together enforces the correct range and non-empty input.
Final Answer:
[ValidateRange(1024,65535)][ValidateNotNullOrEmpty()] -> Option A
Quick Check:
Range + NotNullOrEmpty = correct port validation [OK]
Hint: Combine ValidateRange and ValidateNotNullOrEmpty for numeric required input [OK]
Common Mistakes:
Using ValidateSet for numeric ranges
Relying on ValidatePattern for numeric range checks