6 min read
Using .NET Libraries in PowerShell - GUI dialogs and case-correcting text
In the previous two parts, we looked at a few .NET types and ways to “look inside” and find their hidden methods. This...
Unlocking the Power of PowerShell: Tips for Success
Tired of cryptic number codes cluttering your PowerShell scripts? Discover how PowerShell enums can transform your code into self-documenting, error-resistant masterpieces while unlocking powerful IntelliSense features that will revolutionize your scripting workflow.
Class support was added to PowerShell in 2016 but is still not widely adopted – event though it can be very simple and very powerful.
Often scripts use simple numbers that can be cryptic, hard to understand, and error-prone:
# unstructured
$logLevel = 3
Enums are a perfect strategy to manage lists of values and provide friendly names to them:
# strictly-typed
enum MyLogLevel
{
No
Info
Verbose
Debug
All
}
$logLevel = [MyLogLevel]::Info
$logLevel
if ($logLevel -eq 'Info') { "INFO active" }
Internally, each enum is still a number, but user-friendly names help to understand the purpose, and the enum ensures that only valid numbers can be used:
Once you start using enums, this also improves usability. PowerShell automatically turns enums into IntelliSense menus. Here is a function called Write-LogMessage that illustrates this:
enum MyLogLevel
{
No
Info
Verbose
Debug
All
}
function Write-LogMessage
{
[CmdletBinding()]
param
(
[string][Parameter(Mandatory)]$Message,
[MyLogLevel]$logLevel = 'Info'
)
'{0:yyyyMMddHHmmss} {1,-7} {2}' -f (Get-Date), $logLevel, $Message
}
Part two of using enumerations in PowerShell is online, too. Click here to read the next tip for enums!
Mar 26, 2025 by Aleksandar Nikolić and Dr. Tobias Weltner
In the previous two parts, we looked at a few .NET types and ways to “look inside” and find their hidden methods. This...
Mar 19, 2025 by Aleksandar Nikolić and Dr. Tobias Weltner
In part 1, we began exploring how cmdlets internally rely on .NET libraries and how you can access these libraries...
Mar 11, 2025 by Aleksandar Nikolić and Dr. Tobias Weltner
Most PowerShell cmdlets are simply wrappers around underlying .NET libraries. In this series, we’ll take a closer look...
Tobias Weltner and Aleksandar Nikolić joinly wrote the blog post series 'Tobias&Aleksandar's PowerShell tips'. So we introduce both of them here:
----------------------------
Aleksandar Nikolić is a Microsoft Azure MVP and co-founder of PowerShellMagazine.com, the ultimate online source for PowerShell enthusiasts. With over 18 years of experience in system administration, he is a respected trainer and speaker who travels the globe to share his knowledge and skills on Azure, Entra, and PowerShell. He has spoken at IT events such as Microsoft Ignite, ESPC, NIC, CloudBrew, NTK, and PowerShell Conference Europe.
----------------------------
Tobias is a long-time Microsoft MVP and has been involved with the development of PowerShell since its early days. He invented the PowerShell IDE "ISESteroids", has written numerous books on PowerShell for Microsoft Press and O'Reilly, founded the PowerShell Conference EU (psconf.eu), and is currently contributing to the advancement of PowerShell as member in the "Microsoft Cmdlet Working Group". Tobias shares his expertise as a consultant in projects and as a trainer in in-house trainings for numerous companies and agencies across Europe.