Bird
Raised Fist0
PowerShellscripting~10 mins

PowerShell on macOS - Interactive Code Practice

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
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to display the current directory path in PowerShell on macOS.

PowerShell
Get-Location | Select-Object -ExpandProperty [1]
Drag options to blanks, or click blank then click option'
APath
BName
CFullName
DDirectory
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'Name' or 'FullName' which do not exist on the object returned by Get-Location.
Using 'Directory' which is not a property of the location object.
2fill in blank
medium

Complete the code to list all files in the current directory on macOS using PowerShell.

PowerShell
Get-ChildItem -File | [1] Name
Drag options to blanks, or click blank then click option'
ASort-Object
BSelect-Object
CWhere-Object
DMeasure-Object
Attempts:
3 left
💡 Hint
Common Mistakes
Using Where-Object which filters items but does not select properties.
Using Sort-Object which sorts but does not select properties.
3fill in blank
hard

Fix the error in the code to create a new directory named 'TestFolder' on macOS using PowerShell.

PowerShell
New-Item -ItemType Directory -Name [1]
Drag options to blanks, or click blank then click option'
ATestFolder
B'TestFolder'
C-TestFolder
D/TestFolder
Attempts:
3 left
💡 Hint
Common Mistakes
Including quotes inside the blank which causes the name to be a string literal with quotes.
Using a path format like '/TestFolder' which is not needed here.
4fill in blank
hard

Fill both blanks to filter files larger than 1MB and display their names in PowerShell on macOS.

PowerShell
Get-ChildItem -File | Where-Object { $_.[1] [2] 1MB } | Select-Object Name
Drag options to blanks, or click blank then click option'
ALength
B>
C<
DSize
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'Size' which is not a property of file objects in PowerShell.
Using '<' instead of '>' which filters smaller files.
5fill in blank
hard

Fill all three blanks to create a hashtable of file names and their sizes for files modified in the last 7 days on macOS PowerShell.

PowerShell
$recentFiles = @(); foreach ([2] in (Get-ChildItem -File | Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-7) })) { $recentFiles += @{ [1] = $[2].Name; [3] = $[2].Length } }
Drag options to blanks, or click blank then click option'
AName
Bfile
CSize
Ditem
Attempts:
3 left
💡 Hint
Common Mistakes
Using inconsistent variable names in the loop and hashtable.
Using 'Length' as a key instead of 'Size'.

Practice

(1/5)
1. Which command do you use to start PowerShell on macOS after installation?
easy
A. pwsh
B. powershell
C. ps
D. shell

Solution

  1. Step 1: Recall the PowerShell command on macOS

    On macOS, PowerShell is started using the pwsh command, not powershell which is used on Windows.
  2. Step 2: Identify the correct command

    Among the options, only pwsh is the correct command to launch PowerShell on macOS.
  3. Final Answer:

    pwsh -> Option A
  4. Quick Check:

    PowerShell on macOS starts with pwsh [OK]
Hint: Remember: macOS uses 'pwsh' to start PowerShell [OK]
Common Mistakes:
  • Typing 'powershell' instead of 'pwsh' on macOS
  • Using 'ps' which lists processes, not PowerShell
  • Assuming 'shell' starts PowerShell
2. Which of the following is the correct syntax to run a PowerShell script named script.ps1 on macOS terminal?
easy
A. ./script.ps1
B. run script.ps1
C. pwsh script.ps1
D. powershell -file script.ps1

Solution

  1. Step 1: Understand how to run scripts in PowerShell on macOS

    On macOS, you run PowerShell scripts by calling pwsh followed by the script name.
  2. Step 2: Check each option

    ./script.ps1 tries to run the script directly, which may fail without execution permission and PowerShell context. powershell -file script.ps1 uses Windows syntax. run script.ps1 is invalid. pwsh script.ps1 correctly runs the script with PowerShell.
  3. Final Answer:

    pwsh script.ps1 -> Option C
  4. Quick Check:

    Run scripts with 'pwsh script.ps1' on macOS [OK]
Hint: Use 'pwsh script.ps1' to run scripts on macOS [OK]
Common Mistakes:
  • Trying to run script directly without 'pwsh'
  • Using Windows PowerShell syntax on macOS
  • Using 'run' command which doesn't exist
3. What will be the output of this PowerShell command run on macOS terminal?
pwsh -Command "Write-Output 'Hello macOS'"
medium
A. Hello macOS
B. Write-Output 'Hello macOS'
C. pwsh: command not found
D. Error: Invalid command

Solution

  1. Step 1: Understand the command structure

    The command uses pwsh -Command to run a PowerShell command inline, which outputs the string 'Hello macOS'.
  2. Step 2: Predict the output

    The Write-Output cmdlet prints the string to the terminal, so the output will be exactly 'Hello macOS'.
  3. Final Answer:

    Hello macOS -> Option A
  4. Quick Check:

    Write-Output prints text to terminal [OK]
Hint: Write-Output prints text; expect exact string output [OK]
Common Mistakes:
  • Confusing command string with output
  • Assuming 'pwsh' is not installed
  • Expecting error due to quotes
4. You try to run a PowerShell script on macOS with pwsh ./myscript.ps1 but get a permission denied error. What is the most likely fix?
medium
A. Use sudo pwsh ./myscript.ps1 to run as admin
B. Run chmod +x myscript.ps1 to add execute permission
C. Rename the script to myscript.sh
D. Reinstall PowerShell on macOS

Solution

  1. Step 1: Identify cause of permission denied

    On macOS, scripts need execute permission to run. Without it, you get a permission denied error.
  2. Step 2: Fix permission issue

    Using chmod +x myscript.ps1 adds execute permission, allowing the script to run.
  3. Final Answer:

    Run chmod +x myscript.ps1 to add execute permission -> Option B
  4. Quick Check:

    Permission denied? Add execute permission with chmod [OK]
Hint: Add execute permission with chmod +x before running script [OK]
Common Mistakes:
  • Trying to run script without execute permission
  • Renaming script to .sh which doesn't help PowerShell
  • Using sudo unnecessarily
  • Reinstalling PowerShell instead of fixing permissions
5. You want to automate listing all files in your Documents folder on macOS using PowerShell and save the output to a text file named files.txt. Which command correctly does this?
hard
A. Get-ChildItem ~/Documents > files.txt
B. ls ~/Documents > files.txt
C. pwsh -Command "ls" ~/Documents > files.txt
D. pwsh -Command "Get-ChildItem ~/Documents | Out-File files.txt"

Solution

  1. Step 1: Use PowerShell cmdlet to list files

    Get-ChildItem lists files and folders in PowerShell. Using ~/Documents targets the Documents folder.
  2. Step 2: Redirect output to a file in PowerShell

    PowerShell uses Out-File to save output to a file. The command runs inside pwsh -Command to execute from macOS terminal.
  3. Final Answer:

    pwsh -Command "Get-ChildItem ~/Documents | Out-File files.txt" -> Option D
  4. Quick Check:

    Use Get-ChildItem with Out-File inside pwsh [OK]
Hint: Use Get-ChildItem piped to Out-File inside pwsh command [OK]
Common Mistakes:
  • Using shell redirection > inside PowerShell command incorrectly
  • Using 'ls' which is not a PowerShell cmdlet
  • Running PowerShell cmdlets outside pwsh context
  • Omitting Out-File to save output