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.