Bird
Raised Fist0
PowerShellscripting~10 mins

Environment variables in PowerShell - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Environment variables
Start PowerShell Session
↓
Access Environment Variables
↓
Read or Modify Variable
↓
Use Variable in Script or Command
↓
End or Continue Session
This flow shows how PowerShell starts, accesses environment variables, reads or changes them, uses them in commands, and then continues or ends.
Execution Sample
PowerShell
Write-Output $Env:USERNAME
$Env:MYVAR = "Hello"
Write-Output $Env:MYVAR
This script prints the current username, sets a new environment variable MYVAR, then prints its value.
Execution Table
StepActionVariableValueOutput
1Read environment variable USERNAMEUSERNAMEUser123User123
2Set environment variable MYVARMYVARHello
3Read environment variable MYVARMYVARHelloHello
4End of script
💡 Script ends after printing MYVAR value.
Variable Tracker
VariableStartAfter Step 2After Step 3Final
USERNAMEUser123User123User123User123
MYVARundefinedHelloHelloHello
Key Moments - 2 Insights
Why does $Env:MYVAR have no value before setting it?
Before step 2 in the execution_table, MYVAR is not set, so it is undefined. Only after step 2 it has the value 'Hello'.
Does changing $Env:MYVAR affect system-wide variables?
No, changes to $Env:MYVAR in the session only affect the current PowerShell session, not system-wide environment variables.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the output at step 1?
AUser123
BHello
C$Env:USERNAME
Dundefined
💡 Hint
Check the Output column at step 1 in the execution_table.
At which step does MYVAR get its value?
AStep 1
BStep 2
CStep 3
DStep 4
💡 Hint
Look at the Variable and Value columns in the execution_table.
If you remove step 2, what would be the output at step 3?
AHello
BUser123
Cundefined
DError
💡 Hint
Without setting MYVAR, it remains undefined as shown in variable_tracker before step 2.
Concept Snapshot
PowerShell environment variables use $Env:VAR_NAME syntax.
Read with $Env:VAR_NAME, set with $Env:VAR_NAME = "value".
Changes affect only current session.
Use them to store info like usernames or paths.
Unset variables are undefined.
Full Transcript
In PowerShell, environment variables are accessed using $Env: followed by the variable name. You can read a variable like $Env:USERNAME to get the current username. You can also set a variable by assigning a value, for example $Env:MYVAR = "Hello". This change only affects the current PowerShell session and does not change system-wide settings. When you print $Env:MYVAR after setting it, you see the new value. Before setting, the variable is undefined. This simple script shows reading and writing environment variables step by step.

Practice

(1/5)
1. What is the correct way to access the environment variable PATH in PowerShell?
easy
A. Use PATH$
B. Use get-env PATH
C. Use env(PATH)
D. Use $env:PATH

Solution

  1. Step 1: Understand PowerShell environment variable syntax

    PowerShell uses $env:VARIABLE_NAME to access environment variables.
  2. Step 2: Apply syntax to PATH variable

    To get the PATH variable, write $env:PATH.
  3. Final Answer:

    Use $env:PATH -> Option D
  4. Quick Check:

    Environment variable access = $env:VARIABLE [OK]
Hint: Remember: environment variables use $env: prefix in PowerShell [OK]
Common Mistakes:
  • Using incorrect syntax like get-env or env()
  • Forgetting the $env: prefix
  • Trying to access variables without colon
2. Which of the following is the correct syntax to set an environment variable named MY_VAR to the value hello in PowerShell?
easy
A. set-env MY_VAR hello
B. $env:MY_VAR = 'hello'
C. env MY_VAR = hello
D. set $env:MY_VAR hello

Solution

  1. Step 1: Recall how to assign environment variables in PowerShell

    PowerShell assigns environment variables by setting $env:VariableName to a value.
  2. Step 2: Apply assignment to MY_VAR

    Use $env:MY_VAR = 'hello' to set the variable.
  3. Final Answer:

    $env:MY_VAR = 'hello' -> Option B
  4. Quick Check:

    Set env var = $env:VAR = value [OK]
Hint: Set env vars with $env:VAR = 'value' syntax [OK]
Common Mistakes:
  • Using set-env which is not a PowerShell cmdlet
  • Missing quotes around string values
  • Trying to assign without $env: prefix
3. What will be the output of the following PowerShell commands?
$env:GREETING = 'Hello'
Write-Output "$env:GREETING, World!"
medium
A. Hello, World!
B. $env:GREETING, World!
C. GREETING, World!
D. Error: Variable not found

Solution

  1. Step 1: Assign environment variable GREETING

    The command $env:GREETING = 'Hello' sets the environment variable GREETING to 'Hello'.
  2. Step 2: Output the string with variable expansion

    The command Write-Output "$env:GREETING, World!" expands $env:GREETING to 'Hello', so the output is 'Hello, World!'.
  3. Final Answer:

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

    Variable expands correctly = Hello, World! [OK]
Hint: Variables inside double quotes expand automatically in PowerShell [OK]
Common Mistakes:
  • Expecting literal $env:GREETING instead of expansion
  • Using single quotes which prevent expansion
  • Assuming environment variables are not accessible in strings
4. You run this script but get an error:
Write-Output $envMY_VAR

What is the error and how to fix it?
medium
A. Environment variables cannot be used in Write-Output
B. Variable name is case sensitive; use $env:my_var
C. Missing colon after env; fix by using $env:MY_VAR
D. Use double quotes around variable: "$envMY_VAR"

Solution

  1. Step 1: Identify syntax error in variable name

    The variable $envMY_VAR is invalid because environment variables require a colon after env, like $env:MY_VAR.
  2. Step 2: Correct the syntax

    Fix the script by changing to Write-Output $env:MY_VAR to properly access the environment variable.
  3. Final Answer:

    Missing colon after env; fix by using $env:MY_VAR -> Option C
  4. Quick Check:

    Env vars need colon after env = $env:VAR [OK]
Hint: Always use colon after env to access variables: $env:VAR [OK]
Common Mistakes:
  • Omitting colon after env
  • Assuming variable names are case sensitive
  • Trying to quote variable name instead of fixing syntax
5. You want to temporarily add a folder C:\Tools to the PATH environment variable for your current PowerShell session only. Which command correctly does this?
hard
A. $env:PATH = $env:PATH + ';C:\Tools'
B. setx PATH "$env:PATH;C:\Tools"
C. New-Item -Path Env:PATH -Value 'C:\Tools'
D. $env:PATH += 'C:\Tools'

Solution

  1. Step 1: Understand session vs persistent environment variables

    Modifying $env:PATH directly changes it only for the current session.
  2. Step 2: Append new folder to existing PATH

    Use $env:PATH = $env:PATH + ';C:\Tools' to add the folder, separating with a semicolon.
  3. Final Answer:

    $env:PATH = $env:PATH + ';C:\Tools' -> Option A
  4. Quick Check:

    Append with $env:PATH = $env:PATH + ';new_path' [OK]
Hint: Append with $env:PATH = $env:PATH + ';new_folder' for session only [OK]
Common Mistakes:
  • Using setx which changes persistent variables, not session
  • Using += without semicolon separator
  • Overwriting PATH without appending
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