This post composed on MiniTool official webpage gives a brief review of PowerShell cmdlet commands. It introduces its meaning, frequently used terms, common examples, as well as differences compared to the command lines in other environments.
Cmdlet Definition
What Is a Cmdlet?
A cmdlet is a lightweight command used in the PowerShell environment. The PowerShell runtime invokes those cmdlets within the context of automation scripts that are provided at the command line. The PowerShell runtime also invokes them programmatically via PowerShell APIs.
What Is a PowerShell Cmdlet?
Cmdlets perform an action and typically return a Microsoft .NET object to the next command order in the pipeline. A cmdlet PowerShell is a single command line that participates in the pipeline semantics of PowerShell, which contains binary (C#) cmdlets, CDXML, Workflows, as well as advanced script functions.
Terms of PowerShell Cmdlet
Below are some of the frequently use command patterns of the cmdlet in PowerShell.
1. PowerShell Cmdlet Parameters
Cmdlet parameters refer to the public properties that define the parameters that are available to the user or to the application that is running the cmdlet. Cmdlets can have required, named, positional, and switch parameters. Switch parameters enable you to define parameters that are evaluated only if the parameters are specified in the call.
2. Cmdlet Dynamic Parameter
A dynamic parameter is a parameter that is added to the cmdlet at runtime. It is typically added to the cmdlet when another parameter is set to a specific value.
3. Cmdlet Parameter Set
A parameter set means a group of parameters that can be used in the same command to perform a specific action. A single cmdlet can have multiple parameter sets while each parameter set must have at least one unique parameter. A good cmdlet design strongly suggests that a unique parameter is also required.
4. Cmdlet Attribute
Cmdlet attribute command is a .NET attribute used to declare a cmdlet class as a cmdlet. Although PowerShell uses several other attributes that are optional, the cmdlet one is necessary.
5. Cmdlet Transaction
The transaction of the cmdlet is a logical group of commands that are treated as a single task, which automatically fails if any command in the transaction fails. Yet, the user can choose to accept or refuse the actions performed within the transaction.
In order to participate in a transaction, the cmdlet must declare that it supports transactions when the cmdlet attribute is declared. The support for transactions was introduced in Windows PowerShell 2.0.
6. Cmdlet ShouldProcess Feature
PowerShell enables you to create cmdlets that prompt the user for feedback before the cmdlet makes a change to the system. To make use of this function, the cmdlet has to declare that it supports the ShouldProcess feature when you declare the cmdlet attribute. And, the cmdlet must call the following two methods from within an input processing method:
7. Cmdlet Input Processing Methods
The System.Management.Automation.Cmdlet class offers below virtual methods that are applied to process records. And, all the derived cmdlet classes must override at least one of the first three methods below.
- Management.Automation.Cmdlet.BeginProcessing: It is used to offer optional one-time and pre-processing functionality for the cmdlet.
- Management.Automation.Cmdlet.ProcessRecord: It is used to offer record-by-record processing functionality for the cmdlet and might be called any number of times, or not at all, depending on the input of the cmdlet.
- Management.Automation.Cmdlet.EndProcessing: It is used to provide optional one-time and post-processing functionality for the cmdlet just the same as the first method.
- Management.Automation.Cmdlet.StopProcessing: It is used to stop processing when the user stops the cmdlet asynchronously like by pressing CTRL+C.
When you implement a cmdlet, you must override one or more of those input processing methods. Since the ProcessRecord() is called for every record when the cmdlet processes, typically, you have to override it.
However, the BeginProcessing() and the EndProcessing() methods are called one time to perform pre-processing or post-processing of the records.
Cmdlet Commands
#1 Get-Command
The cmdlet Get-Command lists other cmdlets. Use “get-command” with no options lists all available cmdlets and they are many. So, it’s recommended to use the Get-Command with the -name option to search a certain cmdlet. For example, search “Write-Warning” use the following command.
get-command -name write-warning
Or, you can use the wildcard to perform a partial match on a cmdlet’s name. For instance, use “*write*”
to list all the cmdlets commands whose name contains “write”.
get-command -name *write*
#2 Get-Help
PowerShell cmdlet help-getting command shows a help message giving you more info about how to use cmdlet properly. Furthermore, you can get the details of a specific command by adding its name behind the Get-Help. Below is the command for getting details of remoting.
get-help remoting
#3 New-Item
This command is a convenient way to create a new directory or file on your computer from the command line. You are able to specify the type of the new item, directory or file, using the -type option. For example, you can create a new directory D:\test with the below command:
New-item “d:\test” -type directory
And, create a Word file named my file within the test folder with this command:
New-item “d:\test\my file.docx” -type file
#4 Get-Location
The Get-Location cmdlet shows you what your current working directory is.
#5 Set-Location
You can use the Set-Location cmdlet command to alter your working directory. If you want to shift your working directory to c:\users, just type in the following command.
set-location c:\users
What’s the Difference Between Cmdlets and Commands in other Code Environment?
There are several differences between cmdlets commands and commands in other environments.
- Cmdlets are instances of .NET classes and not stand-alone executables.
- Cmdlets don’t generally do their own parsing, error presentation, or output formatting, and those are handled by the PowerShell runtime.
- Cmdlets process input objects from the pipeline instead of streams of text and cmdlets typically deliver objects as output to the pipeline.
- Cmdlets can be created from as few as a dozen lines of code.
- Cmdlets are record-oriented for they process a single object at a time.