A cmdlet is a lightweight command that is used in the Windows PowerShell environment. The Windows PowerShell runtime invokes these cmdlets within the context of automation scripts that are provided at the command line. The Windows PowerShell runtime also invokes them programmatically through Windows PowerShell APIs.
They basically accept input via parameters, perform the operation, and then output the results.
Cmdlets differ from commands in a command-shell environment in the following ways:
- Cmdlets are instances of .NET Framework classes; they are not standalone executables.
- Cmdlets can be created from as few as a dozen lines of code.
- Cmdlets do not generally do their own parsing, error presentation, or output formatting and these operations are normally handled by the Windows PowerShell runtime.
- Cmdlets process input objects from the pipeline rather than from streams of text, and typically deliver objects as output to the pipeline.
- Cmdlets are record-oriented because they process a single object at a time.
Parameters are the input values that we pass to a cmdlet. For example, if we have to get the time zone, we can use the following cmdlet:
Get-TimeZone
This cmdlet gets the current time zone or a list of available time zones.
These are the parameters:
[-Id]
: Specifies, as a string array, the ID or IDs of the time zones that this cmdlet gets[-ListAvailable]
: Indicates that this cmdlet gets all available time zones[-Name]
: Specifies, as a string array, the name or names of the time zones that this cmdlet gets
We can use this command with or without these parameters:
Get-TimeZone
The following screenshot shows the output for the preceding command:
We can use this command with the Name
parameter:
Get-TimeZone -Name "*pac*"
The following screenshot shows the output for the preceding command:
We can use this command with the ListAvailable
parameter:
Get-TimeZone -ListAvailable
The following screenshot shows the output for the preceding command:
In PowerShell, variables are always prefixed by the character $
and can include any alphanumeric character or underscore in their names. We can store the output from a cmdlet in a variable and use it later on in other cmdlets or for other purposes in the script, such as writing to the host, using it for comparison, or creating another variable, such as this, for example:
$timeZone = Get-TimeZone Write-Host "The current time zone is " $timeZone
The following screenshot shows the output for the preceding command: