O modificador "(? m)" aplica-se aos operadores do PowerShell (-match, -replace, etc), mas você está usando a classe .NET RegEx que não usa os modificadores do PowerShell. Nesse caso, você pode usar o sinalizador Multiline RegexOptions:
[regex]::matches($Data, $FunctionPattern, "Multiline")
Mas eu não acho que o dot (".") sempre corresponda às novas linhas no .Net / PowerShell. Você precisará usar "\ r \ n" para corresponder às novas linhas.