Bird
Raised Fist0
PowerShellscripting~10 mins

Select-Object for properties in PowerShell - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Select-Object for properties
Get objects
↓
Pipe to Select-Object
↓
Specify properties to keep
↓
Output objects with selected properties
↓
Display or use filtered objects
This flow shows how objects are passed through Select-Object to keep only chosen properties before output.
Execution Sample
PowerShell
Get-Process | Select-Object -Property Id, ProcessName
This command gets running processes and shows only their Id and ProcessName properties.
Execution Table
StepActionInput Object PropertiesSelected PropertiesOutput Object Properties
1Get-Process retrieves a process objectId, ProcessName, CPU, Handles, ...N/AId, ProcessName, CPU, Handles, ...
2Pipe object to Select-ObjectId, ProcessName, CPU, Handles, ...Id, ProcessNameId, ProcessName
3Select-Object outputs object with only Id and ProcessNameId, ProcessName, CPU, Handles, ...Id, ProcessNameId, ProcessName
4Output displayed with filtered propertiesN/AN/AId=1234, ProcessName='powershell'
ExitNo more objectsN/AN/AEnd of output
💡 All input objects processed; output contains only selected properties.
Variable Tracker
VariableStartAfter Step 1After Step 2Final
ProcessObjectN/A{Id=1234, ProcessName='powershell', CPU=10, Handles=50}{Id=1234, ProcessName='powershell'}{Id=1234, ProcessName='powershell'}
Key Moments - 2 Insights
Why do we see fewer properties in the output after using Select-Object?
Select-Object filters the input objects to include only the properties you specify, as shown in execution_table step 3 where output has only Id and ProcessName.
Does Select-Object change the original objects?
No, it creates new objects with only the selected properties, leaving original objects unchanged, as seen in variable_tracker where original properties exist before filtering.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table at step 2, which properties are selected by Select-Object?
ACPU and Handles
BId and ProcessName
CAll properties
DNo properties
💡 Hint
Check the 'Selected Properties' column at step 2 in execution_table.
At which step does the output object lose properties like CPU and Handles?
AStep 3
BStep 1
CStep 2
DExit
💡 Hint
Look at the 'Output Object Properties' column in execution_table to see when properties are filtered.
If you add -Property CPU to Select-Object, how would the output properties change?
AOutput would include all properties
BOutput would include only CPU
COutput would include Id, ProcessName, and CPU
DOutput would be empty
💡 Hint
Think about how Select-Object filters properties as shown in execution_table and variable_tracker.
Concept Snapshot
Select-Object filters objects to keep only specified properties.
Syntax: Get-Command | Select-Object -Property Prop1, Prop2
It outputs new objects with only those properties.
Useful to simplify output or prepare data for next steps.
Full Transcript
This lesson shows how Select-Object works in PowerShell to pick only certain properties from objects. First, objects like processes are retrieved with many properties. Then, Select-Object filters these to keep only the properties you want, like Id and ProcessName. The output shows just those properties, making data easier to read or use. The original objects remain unchanged. This is useful when you want to focus on specific details from complex data.

Practice

(1/5)
1. What does the PowerShell cmdlet Select-Object do when used with property names?
easy
A. It shows only the specified properties from the objects passed to it.
B. It deletes the specified properties from the objects.
C. It renames the specified properties in the output.
D. It sorts the objects based on the specified properties.

Solution

  1. Step 1: Understand Select-Object purpose

    Select-Object is used to pick specific properties from objects, filtering out others.
  2. Step 2: Analyze the effect of specifying properties

    When you give property names, Select-Object returns only those properties in the output.
  3. Final Answer:

    It shows only the specified properties from the objects passed to it. -> Option A
  4. Quick Check:

    Select-Object with properties = show those properties [OK]
Hint: Select-Object picks only listed properties to simplify output [OK]
Common Mistakes:
  • Thinking Select-Object deletes properties permanently
  • Confusing Select-Object with Sort-Object
  • Assuming it renames properties automatically
2. Which of the following is the correct syntax to select only the 'Name' and 'Id' properties from a list of processes?
easy
A. Get-Process | Select-Object Name, Id
B. Get-Process | Select-Object -Select Name, Id
C. Get-Process | Select-Object -Properties Name Id
D. Get-Process | Select-Object -Property Name, Id

Solution

  1. Step 1: Recall Select-Object syntax

    The correct parameter to specify properties is '-Property' followed by a comma-separated list.
  2. Step 2: Check each option

    Get-Process | Select-Object -Property Name, Id uses '-Property Name, Id' which is correct syntax. Get-Process | Select-Object Name, Id misses the dash before Property. Get-Process | Select-Object -Properties Name Id misses commas and uses incorrect parameter '-Properties'. Get-Process | Select-Object -Select Name, Id uses invalid '-Select'.
  3. Final Answer:

    Get-Process | Select-Object -Property Name, Id -> Option D
  4. Quick Check:

    Correct parameter is -Property with commas [OK]
Hint: Use -Property with commas to list properties [OK]
Common Mistakes:
  • Omitting the dash before 'Property'
  • Using spaces instead of commas between properties
  • Using wrong parameter names like -Select or -Properties
3. What will be the output of this command?
Get-Process | Select-Object -Property Name, CPU | Select-Object -First 3
medium
A. The first 3 processes showing only their Name and CPU usage.
B. All processes showing Name and CPU usage.
C. An error because Select-Object cannot be chained.
D. The first 3 processes showing all properties.

Solution

  1. Step 1: Understand the first Select-Object

    The first Select-Object filters each process object to only include Name and CPU properties.
  2. Step 2: Understand the second Select-Object

    The second Select-Object with -First 3 takes only the first 3 objects from the filtered list.
  3. Final Answer:

    The first 3 processes showing only their Name and CPU usage. -> Option A
  4. Quick Check:

    Chaining Select-Object filters properties then limits output [OK]
Hint: Chain Select-Object to filter properties then limit output [OK]
Common Mistakes:
  • Thinking Select-Object cannot be chained
  • Expecting all properties after filtering
  • Confusing -First with property selection
4. You run this command but get an error:
Get-Service | Select-Object Name Status, DisplayName

What is the problem?
medium
A. Get-Service does not output objects with these properties.
B. Missing commas between property names causes syntax error.
C. Select-Object cannot be used with Get-Service.
D. The command is correct and should not error.

Solution

  1. Step 1: Check property list syntax

    Properties must be separated by commas. Here 'Name Status' lacks a comma.
  2. Step 2: Understand error cause

    Without commas, PowerShell treats 'Name Status' as one invalid property, causing an error.
  3. Final Answer:

    Missing commas between property names causes syntax error. -> Option B
  4. Quick Check:

    Always separate property names with commas [OK]
Hint: Separate property names with commas to avoid errors [OK]
Common Mistakes:
  • Forgetting commas between property names
  • Assuming spaces separate properties
  • Thinking Get-Service output is incompatible
5. You want to create a list of running processes showing only their 'Name' and 'Id', but also add a new property 'ShortName' that shows the first 3 letters of the process name. Which command achieves this?
hard
A. Get-Process | Select-Object -Property Name, Id, ShortName
B. Get-Process | Select-Object Name, Id, ShortName = $_.Name.Substring(0,3)
C. Get-Process | Select-Object Name, Id, @{Name='ShortName';Expression={$_.Name.Substring(0,3)}}
D. Get-Process | Select-Object Name, Id | Add-Member -Name ShortName -Value {$_.Name.Substring(0,3)}

Solution

  1. Step 1: Understand how to add calculated properties

    Use a hashtable with Name and Expression keys inside Select-Object to add new properties.
  2. Step 2: Check each option

    Get-Process | Select-Object Name, Id, @{Name='ShortName';Expression={$_.Name.Substring(0,3)}} correctly uses @{Name='ShortName';Expression={$_.Name.Substring(0,3)}} to add the new property. Get-Process | Select-Object Name, Id, ShortName = $_.Name.Substring(0,3) has wrong syntax. Get-Process | Select-Object -Property Name, Id, ShortName tries to select a non-existent property. Get-Process | Select-Object Name, Id | Add-Member -Name ShortName -Value {$_.Name.Substring(0,3)} uses Add-Member incorrectly for pipeline objects.
  3. Final Answer:

    Get-Process | Select-Object Name, Id, @{Name='ShortName';Expression={$_.Name.Substring(0,3)}} -> Option C
  4. Quick Check:

    Use hashtable with Expression to add calculated property [OK]
Hint: Add calculated properties with @{Name='';Expression={}} in Select-Object [OK]
Common Mistakes:
  • Trying to assign calculated properties directly without hashtable
  • Selecting non-existent properties without calculation
  • Using Add-Member incorrectly in pipeline
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