Bird
Raised Fist0
PowerShellscripting~20 mins

Default parameter values in PowerShell - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
PowerShell Default Parameter Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
💻 Command Output
intermediate
2:00remaining
What is the output of this PowerShell function call?

Consider this PowerShell function with a default parameter value:

function Greet($name = 'Guest') { Write-Output "Hello, $name!" }

What will be the output of Greet when called without arguments?

PowerShell
function Greet($name = 'Guest') { Write-Output "Hello, $name!" }
Greet
AError: Missing argument for parameter 'name'
BHello, Guest!
CHello, $name!
DHello, !
Attempts:
2 left
💡 Hint

Think about what happens when you call a function without providing a value for a parameter that has a default.

📝 Syntax
intermediate
2:00remaining
Which option correctly defines a parameter with a default value in PowerShell?

Choose the correct syntax to define a function parameter $count with a default value of 5.

Aparam([int]$count <- 5)
Bparam([int]$count:5)
Cparam([int]$count => 5)
Dparam([int]$count = 5)
Attempts:
2 left
💡 Hint

PowerShell uses the equals sign = to assign default values to parameters.

🔧 Debug
advanced
2:00remaining
Why does this PowerShell function throw an error when called without arguments?

Look at this function:

function Show-Info {
  param(
    [Parameter(Mandatory=$true)]
    [string]$name,
    [int]$age = 30
  )
  Write-Output "$name is $age years old."
}

Show-Info

Why does calling Show-Info without arguments cause an error?

PowerShell
function Show-Info {
  param(
    [Parameter(Mandatory=$true)]
    [string]$name,
    [int]$age = 30
  )
  Write-Output "$name is $age years old."
}

Show-Info
ABecause $name has no default value and is required, so calling without it causes an error.
BBecause $age has a default value, but $name must be an integer.
CBecause the function syntax is invalid; default values must be last parameters.
DBecause Write-Output cannot handle variables without explicit values.
Attempts:
2 left
💡 Hint

Check which parameters have default values and which do not.

🚀 Application
advanced
2:00remaining
What is the output of this script using default parameter values?

Given this PowerShell script:

function Calculate-Sum {
  param(
    [int]$a = 10,
    [int]$b = 20
  )
  return $a + $b
}

$result1 = Calculate-Sum
$result2 = Calculate-Sum -a 5
$result3 = Calculate-Sum -b 15
$result4 = Calculate-Sum -a 3 -b 7

Write-Output "$result1,$result2,$result3,$result4"

What will be the output?

PowerShell
function Calculate-Sum {
  param(
    [int]$a = 10,
    [int]$b = 20
  )
  return $a + $b
}

$result1 = Calculate-Sum
$result2 = Calculate-Sum -a 5
$result3 = Calculate-Sum -b 15
$result4 = Calculate-Sum -a 3 -b 7

Write-Output "$result1,$result2,$result3,$result4"
A30,25,25,10
B30,25,35,10
C30,25,30,10
D30,15,25,10
Attempts:
2 left
💡 Hint

Remember that parameters with default values use those defaults if not provided.

🧠 Conceptual
expert
2:00remaining
How does PowerShell handle default parameter values when using splatting?

Consider this function:

function Show-Message {
  param(
    [string]$text = 'Hello',
    [string]$color = 'Blue'
  )
  Write-Output "$text in $color"
}

And this splatting call:

$params = @{ text = 'Hi' }
Show-Message @params

What will be the output and why?

PowerShell
function Show-Message {
  param(
    [string]$text = 'Hello',
    [string]$color = 'Blue'
  )
  Write-Output "$text in $color"
}

$params = @{ text = 'Hi' }
Show-Message @params
AHello in Blue - because splatting ignores default values.
BHi in - because $color is empty when not passed in splatting.
CHi in Blue - because $color uses its default value when not provided in splatting.
DError - because splatting requires all parameters to be specified.
Attempts:
2 left
💡 Hint

Think about how splatting passes only specified parameters and how defaults fill in missing ones.

Practice

(1/5)
1. What is the main purpose of using default parameter values in a PowerShell function?
easy
A. To make the function run faster
B. To force the user to always provide a value
C. To provide fallback values when no argument is passed
D. To disable the function if parameters are missing

Solution

  1. Step 1: Understand default parameter values

    Default parameter values are set to be used when no argument is provided by the user.
  2. Step 2: Identify the purpose

    This helps the function run smoothly without errors by using fallback values.
  3. Final Answer:

    To provide fallback values when no argument is passed -> Option C
  4. Quick Check:

    Default values = fallback values [OK]
Hint: Defaults fill in missing inputs automatically [OK]
Common Mistakes:
  • Thinking defaults speed up execution
  • Believing defaults force user input
  • Assuming defaults disable functions
2. Which of the following is the correct syntax to set a default value of 10 for a parameter named $count in a PowerShell function?
easy
A. param([int]$count <- 10)
B. param([int]$count = 10)
C. param([int]$count : 10)
D. param([int]$count => 10)

Solution

  1. Step 1: Recall PowerShell parameter default syntax

    PowerShell uses the equals sign (=) to assign default values in parameters.
  2. Step 2: Match syntax to options

    Only param([int]$count = 10) uses = correctly to assign 10 as default.
  3. Final Answer:

    param([int]$count = 10) -> Option B
  4. Quick Check:

    Default assignment uses = in PowerShell [OK]
Hint: Use = to assign default values in param block [OK]
Common Mistakes:
  • Using : or => instead of = for defaults
  • Confusing syntax with other languages
  • Placing default outside param block
3. What will be the output of this PowerShell function call?
function Greet { param([string]$name = "Guest") "Hello, $name!" }
Greet
medium
A. Hello, Guest!
B. Hello, !
C. Hello, $name!
D. Error: Missing argument

Solution

  1. Step 1: Analyze function parameter default

    The parameter $name has a default value "Guest" if no argument is passed.
  2. Step 2: Check function call without argument

    Calling Greet without arguments uses the default "Guest".
  3. Final Answer:

    Hello, Guest! -> Option A
  4. Quick Check:

    Default used when no argument given = Hello, Guest! [OK]
Hint: No argument? Default value is used [OK]
Common Mistakes:
  • Expecting empty string output
  • Thinking variable name prints literally
  • Assuming error on missing argument
4. Identify the error in this PowerShell function definition:
function Show-Info {
param([string]$info =)
Write-Output $info
}
medium
A. Missing default value after =
B. Parameter type [string] is invalid
C. Write-Output cannot be used inside functions
D. Function name cannot contain a hyphen

Solution

  1. Step 1: Check parameter default syntax

    The parameter $info has an equals sign but no value after it, which is invalid.
  2. Step 2: Validate other parts

    Parameter type [string] is valid, Write-Output is allowed, and hyphens are allowed in function names.
  3. Final Answer:

    Missing default value after = -> Option A
  4. Quick Check:

    Default value must follow = [OK]
Hint: Default values must not be empty after = [OK]
Common Mistakes:
  • Leaving = without a value
  • Misunderstanding function name rules
  • Thinking Write-Output is disallowed
5. You want a PowerShell function Calculate-Sum that adds two numbers, but if the second number is not provided, it should default to the first number. Which parameter default setup achieves this?
hard
A. param([int]$a, [int]$b = 0)
B. param([int]$a = 0, [int]$b = 0)
C. param([int]$a, [int]$b = $null)
D. param([int]$a, [int]$b = $a)

Solution

  1. Step 1: Understand PowerShell parameter default evaluation

    PowerShell binds earlier parameters before evaluating defaults for later ones, allowing references to prior parameters.
  2. Step 2: Identify the correct setup

    param([int]$a, [int]$b = $a) sets $b to the value of $a when $b is not provided.
  3. Final Answer:

    param([int]$a, [int]$b = $a) -> Option D
  4. Quick Check:

    Later defaults can reference earlier parameters [OK]
Hint: Later parameters can default using earlier parameter values [OK]
Common Mistakes:
  • Using fixed defaults like 0 or $null
  • Thinking parameter references are not allowed in defaults
  • Assuming defaults must be literal constants
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