According to Microsoft:
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.
How Cmdlets Differ from Commands
Cmdlets differ from commands in other command-shell environments in the following ways:
Cmdlets are instances of .NET Framework classes; they are not
stand-alone 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. Parsing, error presentation, and output formatting
are handled by the Windows PowerShell runtime.
Cmdlets process input objects from the pipeline rather than from
streams of text, and cmdlets typically deliver objects as output to
the pipeline.
Cmdlets are record-oriented because they process a single object at a
time.