Bird
Raised Fist0
PowerShellscripting~10 mins

Environment variables in PowerShell - Step-by-Step Execution

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
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