Bird
Raised Fist0
PowerShellscripting~10 mins

PowerShell on Linux - 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 - PowerShell on Linux
Open Linux Terminal
Type 'pwsh' to start PowerShell
PowerShell prompt appears
Run PowerShell commands
Exit PowerShell with 'exit'
Back to Linux Terminal
This flow shows how to start PowerShell on Linux, run commands, and exit back to the Linux shell.
Execution Sample
PowerShell
pwsh
Get-Process | Select-Object -First 3
exit
Starts PowerShell on Linux, lists first 3 running processes, then exits PowerShell.
Execution Table
StepActionCommand EnteredOutputNext State
1Start PowerShellpwshPowerShell prompt appears: PS /home/user>PowerShell ready
2List processesGet-Process | Select-Object -First 3Shows 3 process objects with Id, Name, CPUPowerShell ready
3Exit PowerShellexitReturns to Linux terminal promptLinux shell ready
💡 Exited PowerShell, returned to Linux shell prompt
Variable Tracker
VariableStartAfter Step 2After Step 3
PowerShell SessionNot startedRunningClosed
Key Moments - 3 Insights
Why do I type 'pwsh' instead of 'powershell' on Linux?
On Linux, the PowerShell executable is called 'pwsh'. Step 1 in the execution_table shows starting PowerShell with 'pwsh'.
Can I run normal Linux commands inside PowerShell?
Yes, PowerShell on Linux can run Linux commands. But in the example, Step 2 shows a PowerShell command 'Get-Process'. Linux commands can be run too.
How do I exit PowerShell and return to Linux shell?
Typing 'exit' in PowerShell (Step 3) closes the session and returns you to the Linux terminal prompt.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what command starts PowerShell on Linux?
Apwsh
Bpowershell
CGet-Process
Dexit
💡 Hint
See Step 1 in execution_table where 'pwsh' starts PowerShell.
At which step does the PowerShell session end and return to Linux shell?
AStep 1
BStep 3
CStep 2
DPowerShell never ends
💡 Hint
Step 3 shows the 'exit' command returning to Linux shell.
If you run a Linux command inside PowerShell, where would you see the output?
ANo output is shown
BIn a separate Linux terminal window
CIn the PowerShell prompt output (like Step 2)
DOnly after exiting PowerShell
💡 Hint
PowerShell on Linux shows command output inside its prompt as in Step 2.
Concept Snapshot
PowerShell on Linux:
- Start with 'pwsh' command in Linux terminal
- PowerShell prompt appears (PS ...>)
- Run PowerShell or Linux commands inside
- Exit PowerShell with 'exit' to return to Linux shell
- Works like PowerShell on Windows but uses 'pwsh' executable
Full Transcript
To use PowerShell on Linux, open your Linux terminal and type 'pwsh' to start PowerShell. You will see the PowerShell prompt where you can run PowerShell commands like 'Get-Process'. You can also run Linux commands here. When done, type 'exit' to leave PowerShell and return to your Linux shell prompt. This process lets you use PowerShell scripting and automation on Linux systems easily.

Practice

(1/5)
1. What command do you use to start PowerShell on a Linux system?
easy
A. pwsh
B. powershell.exe
C. start-ps
D. shellps

Solution

  1. Step 1: Recall the PowerShell start command on Linux

    On Linux, PowerShell is started by typing pwsh in the terminal.
  2. Step 2: Compare options with the known command

    powershell.exe, start-ps, and shellps are not valid commands to start PowerShell on Linux.
  3. Final Answer:

    pwsh -> Option A
  4. Quick Check:

    PowerShell start command on Linux = pwsh [OK]
Hint: Remember: 'pwsh' starts PowerShell on Linux terminals [OK]
Common Mistakes:
  • Typing 'powershell.exe' which is for Windows only
  • Using 'start-ps' which is not a valid command
  • Confusing shell names
2. Which of the following is the correct syntax to run a Linux command inside PowerShell on Linux?
easy
A. Run-Command 'ls -l'
B. Invoke-Linux ls -l
C. ls -l
D. Start-Linux ls -l

Solution

  1. Step 1: Understand how Linux commands run in PowerShell on Linux

    PowerShell on Linux allows running Linux commands directly by typing them as is, like ls -l.
  2. Step 2: Evaluate each option

    Invoke-Linux ls -l, Run-Command 'ls -l', and Start-Linux ls -l are not valid syntax to run Linux commands.
  3. Final Answer:

    ls -l -> Option C
  4. Quick Check:

    Run Linux commands directly in PowerShell = ls -l [OK]
Hint: Run Linux commands directly without extra syntax in PowerShell [OK]
Common Mistakes:
  • Adding unnecessary PowerShell cmdlets before Linux commands
  • Using quotes incorrectly around Linux commands
  • Assuming Linux commands need special wrappers
3. What will be the output of this PowerShell on Linux command sequence?
pwsh
$files = ls /etc | Where-Object { $_.Name -like '*.conf' }
$files.Count
medium
A. Always zero because filtering is incorrect
B. An error because ls is not recognized
C. The list of all files in /etc
D. The number of files in /etc ending with .conf

Solution

  1. Step 1: Understand the command sequence

    The command ls /etc lists files in /etc. The Where-Object filters files whose names end with '.conf'.
  2. Step 2: Determine the output of $files.Count

    $files stores the filtered list, so $files.Count returns the number of such files.
  3. Final Answer:

    The number of files in /etc ending with .conf -> Option D
  4. Quick Check:

    Count filtered files = number [OK]
Hint: Count filtered files with .Count property after Where-Object [OK]
Common Mistakes:
  • Thinking ls is not recognized in PowerShell on Linux
  • Assuming filtering syntax is invalid
  • Confusing output with file list instead of count
4. You run this script in PowerShell on Linux:
pwsh
$process = Get-Process -Name "bash"
Write-Output $process.Id
But it returns an error: "Get-Process: The term 'Get-Process' is not recognized." What is the likely cause?
medium
A. PowerShell is not installed correctly on Linux
B. You are running the script in the Linux shell, not inside PowerShell
C. The process 'bash' does not exist
D. Get-Process cmdlet is not available on Linux PowerShell

Solution

  1. Step 1: Analyze the error message

    The error says 'Get-Process' is not recognized, which usually means the command is run outside PowerShell.
  2. Step 2: Understand environment context

    If you run PowerShell commands in the Linux shell (bash), they won't work. You must be inside PowerShell (started with pwsh) to run Get-Process.
  3. Final Answer:

    You are running the script in the Linux shell, not inside PowerShell -> Option B
  4. Quick Check:

    Run PowerShell cmdlets inside pwsh shell [OK]
Hint: Run PowerShell commands only inside pwsh shell, not bash [OK]
Common Mistakes:
  • Assuming Get-Process is missing on Linux PowerShell
  • Thinking the process 'bash' does not exist
  • Not starting PowerShell before running commands
5. You want to write a PowerShell script on Linux that lists all running processes and filters only those owned by the current user. Which approach is correct?
hard
A. Get-Process | Where-Object { $_.UserName -eq $env:USER }
B. ps -u $USER | pwsh
C. Get-Process | Where-Object { $_.UserName -eq (whoami) }
D. Get-Process | Where-Object { $_.UserName -eq $env:USERNAME }

Solution

  1. Step 1: Identify environment variable for current user in PowerShell on Linux

    PowerShell on Linux uses $env:USER to get the current user's name.
  2. Step 2: Check filtering syntax for processes

    Filtering processes by Where-Object { $_.UserName -eq $env:USER } correctly compares the process owner to the current user.
  3. Step 3: Evaluate other options

    ps -u $USER | pwsh mixes Linux command with PowerShell incorrectly. Get-Process | Where-Object { $_.UserName -eq (whoami) } uses command output that may not match precisely. Get-Process | Where-Object { $_.UserName -eq $env:USERNAME } uses $env:USERNAME which is typically not set on Linux.
  4. Final Answer:

    Get-Process | Where-Object { $_.UserName -eq $env:USER } -> Option A
  5. Quick Check:

    Use $env:USER for current user in PowerShell on Linux [OK]
Hint: Use $env:USER to get current user in PowerShell on Linux [OK]
Common Mistakes:
  • Using $env:USERNAME which isn't set on Linux PowerShell
  • Mixing Linux commands like 'ps -u $USER' with PowerShell incorrectly
  • Using command output like (whoami) without precise matching