Dynamic Methods in PowerShell 4

by Nov 5, 2013

Beginning with PowerShell 4.0, method names may come from variables. Here's a simple example:

$method = 'ToUpper'
'Hello'.$method() 

This can be useful when the method you want to use depends on something a script would need to figure out first.

function Convert-Text
{
  param
  (
    [Parameter(Mandatory)]
    $Text,
    [Switch]$ToUpper
  )

  if ($ToUpper)
  {
    $method = 'ToUpper'
  }
  else
  {
    $method = 'ToLower'
  }
  $text.$method()
} 

And this is how a user would call the function:

By default, the function would convert text to lower case. When the switch parameter -ToUpper is specified, it converts the text to upper case instead. Thanks to dynamic methods, the function won't need separate code blocks for this.

Twitter This Tip! ReTweet this Tip!