Building Open Source Modules in C# - Emanuel Palm - PSConfEU 2026
He then described why C# can be useful for module authors. He said that the .NET ecosystem gives access to SDKs, type safety, generic methods, interfaces, classes and inheritance, and that modules can reuse existing functionality instead of rebuilding it in PowerShell. He also noted that many Microsoft modules are written in C#.
The talk then covered the required tooling and setup. Emanuel mentioned the .NET SDK, PowerShell, and a code editor such as VS Code or Visual Studio, and explained that framework targeting is an important decision because it determines whether a module can run in Windows PowerShell 5.1 or only in newer PowerShell versions. He also showed the relationship between a PowerShell cmdlet and its C# implementation.
After that, Emanuel walked through a demo module called AC Pigeon, which uses the Azure.Storage.Queues SDK to read and write messages in Azure Storage Queues. He explained the use of Sampler, Plaster, Invoke Build, Pester and GitHub workflows to scaffold the project, automate the build, run tests and publish releases.
He then demonstrated the C# code for a cmdlet that inherits from PSCmdlet, adds parameters, overrides processing methods, and creates a QueueClient using DefaultAzureCredential. He showed how the cmdlet reads a message with PeekMessage and writes the value to the PowerShell output stream.
In the final part, Emanuel described a base command class that shares queue-related parameters across multiple cmdlets, including support for parameter sets and cancellation handling through StopProcessing. He ended by showing the GitHub pipeline running build, integration tests with Azurite, and release steps, and he summarized the main lessons as dependency management, careful use of inheritance, and automation with community tools.
Chapters:
00:00:00 Building Open Source Modules in C# - Emanuel Palm - PSConfEU 2026
00:00:32 PowerShell Modules in C#
00:03:00 Module Types and Benefits
00:07:14 Tooling and Targeting
00:12:47 Sampler Build Setup
00:16:37 Project Structure Overview
00:21:24 Solution and Build Files
00:23:10 Starting the C# Module
00:28:19 Command Naming Questions
00:29:04 Queue Client Logic
00:35:50 Testing the Module
00:36:50 Base Command Inheritance
00:40:27 Pipeline Release Demo
00:42:41 Lessons and TakeawaysShow More
Building Open Source Modules in C# - Emanuel Palm - PSConfEU 2026
This session focused on building PowerShell modules in C# with ...
From Scripts to System Calls with PowerShell - Leo D'Arcy - PSConfEU 2026
PowerShell Conference EU June 1-4, 2026 Dorint Pallas Wiesbaden ...
IntuneStack - a CI/CD PowerShell workflow for managing Intune policy - Hailey Phillips - PSConfEU 26
PowerShell Conference EU June 1-4, 2026 Dorint Pallas Wiesbaden ...
Building security automation with PwshSpectreConsole - David Sass - PSConfEU 2026
This lecture introduces a PowerShell-based terminal user interface for ...
No more passwords: The future is now! - Ben Reader - PSConfEU 2026
PowerShell Conference EU June 1-4, 2026 Dorint Pallas Wiesbaden ...
Who Am I? Applied Tokenology for PowerShellers - Evgenij Smirnov - PSConfEU 2026
PowerShell Conference EU June 1-4, 2026 Dorint Pallas Wiesbaden ...
Reverse AI-ngineering - Raimund Andree, Thorsten Butz - PSConfEU 2026
PowerShell Conference EU June 1-4, 2026 Dorint Pallas Wiesbaden ...
Optimizing Visual Studio Code for PowerShell, 2026 Edition - Justin Grote - PSConfEU 2026
PowerShell Conference EU June 1-4, 2026 Dorint Pallas Wiesbaden ...