I have a PowerShell script that needs to run under multiple hosts (PowerGUI, PowerShell ISE, etc...), but I am having an issue where sometimes a cmdlet doesn\'t exist under one
If the command is in Verb-Noun form then you can use Get-Command with Verb and Noun parameters.
# Usage:
if (Get-Command -Verb Invoke -Noun MyCommand) {
# cmdlet Invoke-MyCommand exists
}
Get-Command -Verb Get -Noun Item
# Output:
# CommandType Name Version Source
# ----------- ---- ------- ------
# Cmdlet Get-Item 7.0.0.0 #Microsoft.PowerShell.Management
Get-Command -Verb Take -Noun One
# No output.
function Take-One { [CmdletBinding()]param() }
Get-Command -Verb Take -Noun One
# Output:
# CommandType Name Version Source
# ----------- ---- ------- ------
# Function Take-One
Tested on Windows PowerShell 5.1 and PowerShell Core 7.0.
Edit 2020-11-09 Additional example. Also usage example (adapted from Keith Hill answer).