What is the PowerShell Crescendo project?
Posted: (EET/GMT+2)
Just recently, Microsoft has made available a PowerShell feature called Crescendo. This new feature is interesting if you work with native command-line tools in PowerShell and want them to behave more PowerShell-like.
PowerShell Crescendo is a Microsoft framework that helps wrap existing command-line tools as PowerShell cmdlets. Instead of manually parsing text output from utilities like
kubectl, docker, or netsh, Crescendo lets you
build PowerShell-friendly wrappers around them.
The idea is not to replace the original tools, but to make them behave more naturally inside the PowerShell pipeline.
For example, instead of calling a native executable directly:
kubectl get pods
...you can create a Crescendo-based wrapper cmdlet that returns PowerShell objects and supports normal parameter handling.
The project reached General Availability (GA) about a month ago (March 2022) after several preview releases.
Install the module from the PowerShell Gallery:
Install-Module -Name Microsoft.PowerShell.Crescendo
Crescendo uses JSON configuration files to describe how the native command should be exposed as a cmdlet.
A simplified configuration looks like this:
{
"$schema": "https://aka.ms/PowerShell/Crescendo/Schemas/2022-06",
"Commands": [
{
"Verb": "Get",
"Noun": "Pod",
"OriginalName": "kubectl"
}
]
}
From that configuration, Crescendo generates a PowerShell module.
One useful feature is output handling. Native tools usually return plain text, while PowerShell works best with structured objects. Crescendo helps bridge that gap and makes the results easier to pipe into other commands.
Tip: Crescendo requires PowerShell 7+ for authoring modules, but generated modules can still run on Windows PowerShell 5.1.
Another practical use case is wrapping older internal utilities that never received proper PowerShell support. Instead of rewriting the tool completely, you can expose a cleaner PowerShell interface around the existing executable.
For automation-heavy environments, especially mixed Windows/Linux tooling, Crescendo looks like a practical "bridge" between traditional CLI utilities and object-oriented PowerShell scripting.
Happier scripting!