In PowerShell there are 2 main ways to extend the shell this are:
Modules - A package that contains Windows PowerShell commands int he form of functions, cmdlets and worksflows, in addition it may contain variables, aliases and providers. Modules can be written in PowerShell and/or compiled as DLLs.
Snap-Ins - Are compiled cmdlets in to a DLL written in a .Net language are being deprecated and no longer recommended as the way to create and package new cmdlets.