PowerShell Get-Command: Find Cmdlets and Functions

You don’t need to memorize the entire PowerShell command catalog — you just need to know how to find what you’re looking for. PowerShell Get-Command is the discovery tool that tells you every cmdlet, function, alias, and external command available in your current session. Whether you know the verb, the noun, or just a fragment of the name, Get-Command surfaces it instantly. This post covers every useful search pattern with examples.
List All Cmdlets
Running Get-Command without parameters returns everything available — cmdlets, functions, aliases, external commands, and scripts. The output can be large, so filter immediately.
# Count total available commands
(Get-Command).Count
# List cmdlets only (not aliases or external commands)
Get-Command -CommandType Cmdlet | Select-Object Name, ModuleName | Sort-Object Name
Name ModuleName
---- ----------
Add-AppxPackage Appx
Add-Content Microsoft.PowerShell.Management
Add-History Microsoft.PowerShell.Core
...
# Search by partial name with wildcards
Get-Command *network*
Search by Verb with -Verb
PowerShell uses a strict verb-noun naming convention. If you know the action you want to perform, filter by verb to see all related cmdlets. Approved PowerShell verbs include Get, Set, New, Remove, Start, Stop, Enable, Disable, and dozens more.
# All cmdlets that start with "Get"
Get-Command -Verb Get | Select-Object -First 20 | Format-Table Name, ModuleName
# All cmdlets that stop or start things
Get-Command -Verb Start, Stop | Sort-Object Noun | Format-Table Verb, Noun, Name
Search by Noun with -Noun
When you know the resource you want to work with — a file, a service, a process — search by noun. This quickly shows you all operations available for that resource.
# Everything related to "Service"
Get-Command -Noun Service
CommandType Name Version Source
----------- ---- ------- ------
Cmdlet Get-Service 7.0.0.0 Microsoft.PowerShell.Management
Cmdlet New-Service 7.0.0.0 Microsoft.PowerShell.Management
Cmdlet Remove-Service 7.0.0.0 Microsoft.PowerShell.Management
Cmdlet Restart-Service 7.0.0.0 Microsoft.PowerShell.Management
Cmdlet Resume-Service 7.0.0.0 Microsoft.PowerShell.Management
Cmdlet Set-Service 7.0.0.0 Microsoft.PowerShell.Management
Cmdlet Start-Service 7.0.0.0 Microsoft.PowerShell.Management
Cmdlet Stop-Service 7.0.0.0 Microsoft.PowerShell.Management
Cmdlet Suspend-Service 7.0.0.0 Microsoft.PowerShell.Management
# Everything related to files
Get-Command -Noun Item | Sort-Object Name
Find Commands from a Module
After importing a module, check what it provides with -Module. This is also useful for discovering what’s available in a module before deciding to import it.
# Commands from a specific module
Get-Command -Module ActiveDirectory | Select-Object Name | Sort-Object Name
# Commands from all networking modules
Get-Command -Module NetTCPIP, NetSecurity, DnsClient
Check If a Command Exists
Before using a cmdlet in a script, verify it exists on the target system. This is essential for cross-version compatibility — some cmdlets only exist in Windows PowerShell, others only in PowerShell 7.
# Returns command object if found, $null if not
$cmd = Get-Command -Name "Invoke-WebRequest" -ErrorAction SilentlyContinue
if ($cmd) {
Write-Output "Found: $($cmd.Name) in module: $($cmd.ModuleName)"
} else {
Write-Output "Command not available on this system."
}
# Quick existence check
if (Get-Command -Name "Get-CimInstance" -ErrorAction SilentlyContinue) {
# Use Get-CimInstance
} else {
Write-Warning "Get-CimInstance not available — are you on PowerShell 3+?"
}
Get Command Syntax with -Syntax
The -Syntax switch returns the parameter syntax for a command without full help text — perfect for a quick reminder of parameter names and positions without running Get-Help.
Get-Command -Name Copy-Item -Syntax
Copy-Item [-Path] <string[]> [[-Destination] <string>] [-Container] [-Force] [-Filter <string>]
[-Include <string[]>] [-Exclude <string[]>] [-Recurse] [-PassThru] [-Credential <pscredential>]
[-WhatIf] [-Confirm] [-FromSession <PSSession>] [-ToSession <PSSession>] [<CommonParameters>]
# Get syntax for multiple commands
Get-Command -Name Get-Item, Set-Item, Remove-Item -Syntax
Common Errors and Fixes
- Too many results — narrow with -Verb or -Noun: Running
Get-Commandwithout parameters returns thousands of entries. Always combine with-Verb,-Noun,-Module, or a wildcard name pattern to get a manageable result. For example,Get-Command *log*finds anything with “log” in the name. - Functions vs cmdlets appear differently in output: The
CommandTypecolumn distinguishesCmdlet(compiled .NET),Function(PowerShell code),Alias,ExternalScript, andApplication(executables). Functions and cmdlets behave similarly but functions show no module name if they’re defined in the current session. Use-CommandType Cmdletor-CommandType Functionto limit results to one type.
Related Cmdlets / See Also
Wrapping Up
Get-Command is your discovery tool — use it to explore before you ask a search engine. The combination of -Verb and -Noun searches gives you the complete action vocabulary for any resource. As a next step, run Get-Command -Noun Process to explore all process management cmdlets and then use Get-Help on the ones that look useful to dive deeper.


