Expresión lambda en Powershell

Tengo un código en C # que usa expresiones lambda para delegar pasar a un método. ¿Cómo puedo lograr esto en PowerShell. Por ejemplo, el siguiente es un código C #:

string input = "(,)(;)(:)(!)";
string pattern = @"\((?<val>[\,\!\;\:])\)";
var r = new Regex(pattern);
string result = r.Replace(input, m =>
    {
        if (m.Groups["val"].Value == ";") return "[1]";
        else return "[0]";
    });
Console.WriteLine(result);

Y este es el script de PowerShell sin la expresión lambda en su lugar:

$input = "(,)(;)(:)(!)";
$pattern = "\((?<val>[\,\!\;\:])\)";
$r = New-Object System.Text.RegularExpressions.Regex $pattern
$result = $r.Replace($input, "WHAT HERE?")
Write-Host $result

Nota: Mi pregunta no es sobre resolver este problema de expresión regular. Solo quiero saber cómo pasar una expresión lambda a un método que recibe delegados en PowerShell.

Respuestas a la pregunta(3)

Su respuesta a la pregunta