Browse Definitions :
How to transfer FSMO roles with PowerShell How to avoid the double-hop problem with PowerShell
X
Definition

cmdlet

What is a cmdlet?

cmdlet -- pronounced command-let -- is a small, lightweight command that is used in the Windows PowerShell environment. A cmdlet typically exists as a small script that is intended to perform a single specific function such as coping files and changing directories. A cmdlet and its relevant parameters can be entered in a PowerShell command line for immediate execution or included as part of a longer PowerShell script that can be executed as desired.

How do cmdlets work?

Cmdlets employ a verb/noun naming pattern that is designed to make each cmdlet easier to remember and read. As an example, a typical Get-ChildItem command uses the verb Get followed by the noun ChildItem. When executed through the PowerShell runtime environment, the command lists or returns the items in one or more specified locations. If items are in a container, the command gets the items inside the container -- child items.

Cmdlets are based on .NET classes and rely on the use of .NET objects. Thus, cmdlets can receive objects as input and deliver objects as output, which can then feed the input of subsequent objects, enabling cmdlets to form a command pipeline.

Most cmdlets support the use of parameters as part of the input mechanism. Parameters can be added to the cmdlet at the command line or passed to cmdlets through the pipeline as the output from a previous cmdlet. The arguments or values of each parameter detail the actual input that the cmdlet will accept, how the cmdlet should work and what -- if any -- data the cmdlet outputs. Switches are specialized arguments that offer preset options or selections.

Consider a simple cmdlet such as Get-Help; the syntax of the cmdlet to get help for desired cmdlets from an online library is:

get-help <cmdlet-name> -online

Get-Help is the cmdlet. The argument of the parameter <cmdlet-name> is the name of the cmdlet that needs more information. In actual use, users would substitute the name of the desired cmdlet. It can be any cmdlet. The switch is -online, which tells PowerShell to reference and return help for the desired cmdlet from Microsoft's online library. For example, to get more help about the Add-AppxPackage cmdlet, the PowerShell command would look like this:

get-help add-appxpackage -online

To use local help for the same cmdlet, eliminate the switch:

get-help add-appxpackage
get-help add-appxpackage
Get more information on the Add-AppxPackage cmdlet.

Cmdlets vs. functions

Although PowerShell relies on processing cmdlets, there is a second type of command called functions. Functions are also interpreted through PowerShell and are routinely used in scripts. It's common to confuse cmdlets and functions. However, cmdlets and functions differ in several important ways.

Cmdlets are .NET classes written in higher programming languages such as C# and compiled in .dll files so that PowerShell can access them. Thus, cmdlet sets can be easily added and new cmdlets can be created and made available to PowerShell. By comparison, functions tend to be integrated into PowerShell and aren't compiled but written in the PowerShell language. Functions tend to be longer and more complex entities that can typically handle parsing, error presentation and output formatting, where cmdlets are often too small and simple to handle such details.

Still, the essential difference between cmdlets and functions is in such packaging issues including setup, installation and features. In actual practice, there is little noticeable difference between cmdlets and functions. Like cmdlets, functions can have parameters and return values that can be displayed or assigned to variables. Both cmdlets and functions are readily used in PowerShell scripts.

Popular cmdlets

There are hundreds of cmdlets available by default under today's PowerShell, and hundreds more cmdlets can be added to PowerShell to support advanced applications such as virtualization platforms and systems management tools. To find a complete index of all the cmdlets that are currently available in PowerShell on a computer, type:

get-command -commandtype cmdlet

This returns a complete list of cmdlets currently in PowerShell. However, this doesn't provide specific details about the purpose or syntax of each cmdlet. To gather more specifics about desired cmdlets, use the Get-Help cmdlet as described above. For example, to learn the name, syntax, aliases and notes about the Unblock-File cmdlet, use:

get-help unblock-file

and PowerShell returns complete examples of proper syntax and parameters. PowerShell users often benefit by getting familiar with a selection of commonly used PowerShell cmdlets, which include:

cmdlet Function
Get-Location get the current directory
Get-ChildItem list items in a directory
Get-Help get more information about a desired cmdlet
Stop-Process terminate a PowerShell process
Set-Location change the current directory
Copy-Item copy files
Remove-Item remove a file or directory
Move-Item move a file
Rename-Item rename a file
New-Item create a new empty file or directory
Invoke-GPUpdate force a group policy update
Stop-Computer shut down a local or remote computer
Restart-Computer restart a local or remote computer
Add-Computer join a computer to a domain

How to write a simple cmdlet

Cmdlets are typically simple entities and can be written in just several dozen lines of C# or other languages that support .NET object code. Although the actual work and complexity of a cmdlet can vary dramatically, the actual process involved in outlining a new cmdlet can usually be broken down into several common steps that involve defining the cmdlet, accepting parameters and then processing the parameters to deliver an output. One simple example might be to create a cmdlet that takes a person's name and generates a test message.

1. Because this is a cmdlet, the developer is basically creating an object, so first specify the parent class for the cmdlet. A cmdlet derives from either the System.Management.Automation.Cmdlet or System.Management.Automation.PSCmdlet classes. A cmdlet in C# can use the using command such as:

using System.Management.Automation;

2. Next, specify the name of the object class. For example, if the new cmdlet is supposed to simply send a test message, C# might use the namespace command such as:

namespace SendTestMessage

3. Declare the class of the object as a cmdlet. The cmdlet attribute enables developers to stipulate the verb and noun elements of the cmdlet name. For example, a C# command that defines a cmdlet and names it "Send-Test" might appear as:

[Cmdlet(VerbsCommunications.Send, "TestMessage")]

4. Specify any parameters for the cmdlet using the parameter attribute. The length and complexity of this code section depends on the number and types of parameters that the cmdlet is intended to handle. For example, if the cmdlet is merely intended to accept the name of a person to receive a test message, a parameter might be to input that individual's name and create the variable string "name". In C#, the code sequence might appear such as:

[Parameter(Mandatory=true)]
    public string Name
    {
      get { return name; }
      set { name = value; }
    }
    private string name;

5. Now the cmdlet has been defined and accepted parameters, the cmdlet code can focus on the actual task at hand. In this case, the task is to take the name parameter and output that name to a simple test message. As an example, the WriteObject command can produce a simple output such as:

     {
      WriteObject("It is good to meet you " + name + "!");
     }

Remember that this is just one simple example and doesn't detail all the commands, punctuation -- indenting and bracketing -- and supporting code that might be required to complete such a cmdlet successfully. Developers can refer to C# and PowerShell documentation, detailed texts on cmdlet creation and countless examples of cmdlets for more programming guidance.

This was last updated in March 2023

Continue Reading About cmdlet

Networking
  • subnet (subnetwork)

    A subnet, or subnetwork, is a segmented piece of a larger network. More specifically, subnets are a logical partition of an IP ...

  • Transmission Control Protocol (TCP)

    Transmission Control Protocol (TCP) is a standard protocol on the internet that ensures the reliable transmission of data between...

  • secure access service edge (SASE)

    Secure access service edge (SASE), pronounced sassy, is a cloud architecture model that bundles together network and cloud-native...

Security
  • cyber attack

    A cyber attack is any malicious attempt to gain unauthorized access to a computer, computing system or computer network with the ...

  • digital signature

    A digital signature is a mathematical technique used to validate the authenticity and integrity of a digital document, message or...

  • What is security information and event management (SIEM)?

    Security information and event management (SIEM) is an approach to security management that combines security information ...

CIO
  • product development (new product development)

    Product development -- also called new product management -- is a series of steps that includes the conceptualization, design, ...

  • innovation culture

    Innovation culture is the work environment that leaders cultivate to nurture unorthodox thinking and its application.

  • technology addiction

    Technology addiction is an impulse control disorder that involves the obsessive use of mobile devices, the internet or video ...

HRSoftware
  • organizational network analysis (ONA)

    Organizational network analysis (ONA) is a quantitative method for modeling and analyzing how communications, information, ...

  • HireVue

    HireVue is an enterprise video interviewing technology provider of a platform that lets recruiters and hiring managers screen ...

  • Human Resource Certification Institute (HRCI)

    Human Resource Certification Institute (HRCI) is a U.S.-based credentialing organization offering certifications to HR ...

Customer Experience
  • contact center agent (call center agent)

    A contact center agent is a person who handles incoming or outgoing customer communications for an organization.

  • contact center management

    Contact center management is the process of overseeing contact center operations with the goal of providing an outstanding ...

  • digital marketing

    Digital marketing is the promotion and marketing of goods and services to consumers through digital channels and electronic ...

Close