Sample Powershell Cmdlet in C#
Another one from the department of aide memoire. Here's the basic process to follow when creating a simple PowerShell Cmdlet in C#.
- Create a new class library.
- Add a reference to the Microsoft Windows PowerShell Engine core assembly - System.Management.Automation.dll
- Add a class derived from
System.Management.Automation.Cmdlet
- Add a
Cmdlet
attribute to the class with a suitable Verb and Noun. - Override the
ProcessRecord
method. - Add properties decorated with
Parameter
attributes. - Consider support for WhatIf? and Confirm Impact.
- Consider applying the
OutputType
attribute to the class. - Use
WriteError
in catch handlers. - Use
WriteObject
to send results to the pipeline. - Create a new Module Manifest (.psd1) using the Powershell
New-ModuleManifest
cmdlet. - Make sure the RootModule setting in the manifest points to the cmdlet dll.
- Create a folder named the same as the dll in a Module folder somewhere in the PowerShell search path.
- Copy the .dll and .psd1 (and any other dependencies) into this folder.
- Open a new PowerShell session and use
Import-Module
to import the new cmdlet(s). - Use the module.
- Profit!