PowerShellの正規表現で名前付きグループを使うときは、-match 演算子では使えません。 代わりに、regexクラスの Matches(str, regex) メソッドを呼び出す必要があります。
名前付きグループとは (?<グループ名>正規表現)
でマッチした部分を取得するときに、「グループ名」で取り出すことができる仕組みです。
名前付きグループを使うことで、プログラムが読みやすくなるメリットがあります。
使い方は以下の通りです。
$result = [regex]::Matches($line, '(?<Id>[0-9]+)\t(?<Name>[a-zA-Z0-9_]+)')
if ($result -ne $null) {
$matchedId = $result[0].Groups['Id'].Value
$matchedName = $result[0].Groups['Name'].Value
}
(補足)名前付きグループを使わないで、普通の括弧で抽出する場合は、以下のように書くことができます。 -match 演算子の結果は matches というグローバル変数に自動的にセットされます。
if ($line -match '^([0-9]+)\t([a-zA-Z0-9_]+)') {
$matchedId = $matches[1]
$matchedName = $matches[2]
}
以上です。