Discovering Commands with Get-Command in PowerShell
📖 Scenario: You are learning how to find commands in PowerShell. Sometimes you want to know what commands are available or find commands related to a topic.
🎯 Goal: You will create a simple script that uses Get-Command to find commands related to a specific word and then display them.
📋 What You'll Learn
Create a variable with a search keyword
Use Get-Command with the keyword
Store the results in a variable
Display the found commands
💡 Why This Matters
🌍 Real World
PowerShell users often need to discover commands to automate tasks or learn new features.
💼 Career
Knowing how to find and filter commands helps system administrators and automation engineers write effective scripts.
Progress0 / 4 steps
1
Create a search keyword variable
Create a variable called $keyword and set it to the string Get.
PowerShell
Hint
Use $keyword = 'Get' to create the variable.
2
Use Get-Command with the keyword
Create a variable called $commands and set it to the result of Get-Command using the -Name parameter with $keyword and a wildcard * after it (like $keyword*).
PowerShell
Hint
Use Get-Command -Name "$keyword*" to find commands starting with the keyword.
3
Filter commands by command type
Filter $commands to only include commands where the CommandType property equals Cmdlet. Store the filtered list back in $commands.
PowerShell
Hint
Use Where-Object { $_.CommandType -eq 'Cmdlet' } to filter the commands.
4
Display the filtered commands
Use Write-Output to display the Name property of each command in $commands.
PowerShell
Hint
Use ForEach-Object { Write-Output $_.Name } to print each command name.
Practice
(1/5)
1. What is the main purpose of the Get-Command cmdlet in PowerShell?
easy
A. To execute a command immediately
B. To create a new command
C. To stop a running command
D. To find and list commands available in PowerShell
Solution
Step 1: Understand the role of Get-Command
Get-Command is used to discover commands available in PowerShell, helping users find what commands they can run.
Step 2: Differentiate from other cmdlets
It does not execute, stop, or create commands; it only lists and finds them.
Final Answer:
To find and list commands available in PowerShell -> Option D
Quick Check:
Get-Command lists commands = B [OK]
Hint: Get-Command lists commands, not runs or stops them [OK]
Common Mistakes:
Thinking Get-Command runs commands
Confusing Get-Command with Stop-Process
Assuming it creates commands
2. Which of the following is the correct syntax to find all commands that start with 'Get-' using Get-Command?
easy
A. Get-Command "Get-"
B. Get-Command -Filter "Get-"
C. Get-Command -Name "Get-*"
D. Get-Command -Search "Get-*"
Solution
Step 1: Identify correct parameter for name filtering
The -Name parameter accepts wildcards like "Get-*" to find commands starting with 'Get-'.
Step 2: Check other options for correctness
-Filter is not a valid parameter for Get-Command, and -Search does not exist. Passing just "Get-" without wildcard won't match all commands starting with 'Get-'.
Final Answer:
Get-Command -Name "Get-*" -> Option C
Quick Check:
Use -Name with wildcard = C [OK]
Hint: Use -Name with wildcard pattern to find commands [OK]
Common Mistakes:
Using invalid parameters like -Filter or -Search
Not using wildcard * to match multiple commands
Passing command name without quotes
3. What will be the output of the following command?
Get-Command -Module Microsoft.PowerShell.Management | Select-Object -First 2 -Property Name
medium
A. Lists the first two command names from the Microsoft.PowerShell.Management module
B. Lists all commands from all modules
C. Returns an error because -Module is invalid
D. Lists the last two commands from the Microsoft.PowerShell.Management module
Solution
Step 1: Understand the use of -Module parameter
-Module Microsoft.PowerShell.Management filters commands to only those in that module.
Step 2: Analyze Select-Object usage
Select-Object -First 2 -Property Name selects only the first two commands and shows their names.
Final Answer:
Lists the first two command names from the Microsoft.PowerShell.Management module -> Option A
Quick Check:
-Module filters module, Select-Object picks first 2 names = A [OK]
Hint: Use -Module to filter commands by module name [OK]
Common Mistakes:
Thinking it lists all commands from all modules
Assuming -Module is invalid
Confusing first two with last two commands
4. You run this command but get an error:
Get-Command -Nam "Get-Process"
What is the most likely cause of the error?
medium
A. Misspelled parameter name; should be -Name instead of -Nam
B. Get-Process is not a valid command
C. You need to run PowerShell as administrator
D. The command requires a module parameter
Solution
Step 1: Check the parameter spelling
The parameter -Nam is misspelled; the correct parameter is -Name.
Step 2: Validate command existence and permissions
Get-Process is a valid command and does not require admin rights or module parameter to run.
Final Answer:
Misspelled parameter name; should be -Name instead of -Nam -> Option A
Quick Check:
Parameter spelling error causes failure = A [OK]
Hint: Check parameter spelling carefully to avoid errors [OK]
Common Mistakes:
Assuming command doesn't exist
Thinking admin rights are needed
Adding unnecessary parameters
5. You want to find all commands of type 'Cmdlet' that include 'Service' in their name. Which command will correctly do this?
hard
A. Get-Command -CommandType Cmdlet -Module '*Service*'
B. Get-Command -Name '*Service*' -CommandType Cmdlet
C. Get-Command -Name 'Service' -CommandType Cmdlet
D. Get-Command -Filter '*Service*' -Type Cmdlet
Solution
Step 1: Use correct parameters for filtering
-Name '*Service*' uses wildcard to find commands with 'Service' anywhere in the name. -CommandType Cmdlet filters to only cmdlets.
Step 2: Eliminate incorrect options
-Filter and -Type are invalid parameters. Exact name 'Service' won't match commands containing 'Service' as part of the name. -Module '*Service*' filters by module name, not command name.
Final Answer:
Get-Command -Name '*Service*' -CommandType Cmdlet -> Option B
Quick Check:
Use -Name with wildcard and -CommandType = D [OK]
Hint: Combine -Name with wildcard and -CommandType to filter commands [OK]
Common Mistakes:
Using invalid parameters like -Filter or -Type
Not using wildcards to match partial names
Confusing module filtering with command name filtering
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.