Starting with PowerShell 5, you can define classes. They have many use cases. One would be to create libraries of useful helper functions to better organize them. For this, a class would define “static” methods. Here is a simple example:

class HelperStuff
{
   # get first character of string and throw exception
   # when string is empty or multi-line
   static [char] GetFirstCharacter([string]$Text)
   {
      if ($Text.Length -eq 0) { throw 'String is empty' }
      if ($Text.Contains("`n")) { throw 'String contains multiple lines' }
      return $Text[0]
   }
   
   # get file extension in lower case
   static [string] GetFileExtension([string]$Path)
   {
      return [Io.Path]::GetExtension($Path).ToLower()
   }
}

This class “HelperStuff” defines two static methods called “GetFirstCharacter” and “GetFileExtension”. It’s now really easy to find and use this utility functions:

 

PS> [HelperStuff]::GetFirstCharacter('Tobias')
T

PS> [HelperStuff]::GetFileExtension('c:\TEST.TxT') 
.txt

PS> [HelperStuff]::GetFileExtension($profile) 
.ps1

PS>
 

Twitter This Tip! ReTweet this Tip!

Anonymous