Skip to the main content.

Unlocking the Power of PowerShell: Tips for Success

Boost PowerShell efficiency: How to use enums for cleaner code

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.

 

Using enums in PowerShell

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:

  • PS C:\> [MyLogLevel]::Info -as [int]
     PS C:\> [MyLogLevel]::Info -as [int]


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!

 

Related links 


Related posts

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...

8 min read

Using .NET Libraries in PowerShell - Libraries and Types

In part 1, we began exploring how cmdlets internally rely on .NET libraries and how you can access these libraries...

5 min read

Using .NET Libraries in PowerShell - Best Practice and Quick Start

Most PowerShell cmdlets are simply wrappers around underlying .NET libraries. In this series, we’ll take a closer look...

About the author: