title: PowerShell -match operator and multiple groups
body: <p>I have the following log entry that I am processing in PowerShell I'm trying to extract all the activity names and durations using the <code>-match</code> operator but I am only getting one match group back.  I'm not getting all of the matches that I see when I do the same thing in C# using the <code>Regex</code> object.  Can someone explain what I am doing wrong?</p>
  <p>Relevant PowerShell Script</p>
  <pre class="lang-none prettyprint-override"><code>$formattedMessage -match &quot;(Get\sClient\sModel|Parse\sExpression|Get\sAbstract\sQuery|Compile\sQuery|Execute\sQuery|Get\sQuery\sPlan\sComplexity|Async\sTotal|Total)\s-\sduration\(([0-9]*)&quot; | out-null
  $matches
  </code></pre>
  <p>Output</p>
  <pre class="lang-none prettyprint-override"><code>Name  Value
  ----  -----
  0     Get Client Model - duration(0
  1     Get Client Model
  2     0
  </code></pre>
  <p>Log Entry Example:</p>
  <pre class="lang-none prettyprint-override"><code>Timestamp: 11/9/2009 6:48:41 PM
  Message:
  Category: QueryService
  Priority: 3
  EventId: 1001
  Severity: Information
  Title: SPARQL Query Response
  Machine: SPOON16-SERVER
  App Domain: KnowledgeBaseHost.exe
  ProcessId: 2040
  Process Name: D:\QueryService\QSHost.exe
  Thread Name:
  Win32 ThreadId:8092
  Extended Properties:
  Key - Workflow_cbbdd58b-e574-4054-88d4-1dd7a56dc9d9
  Timeout - 1800
  Result Format - WireTable
  Result from Registry - False
  Compiled Query from Cache - True
  Result Count - 28332
  Query Plan Complexity - 661622
  Get Client Model - duration(0) start(0)
  Parse Expression - duration(0) start(0)
  Get Abstract Query - duration(0) start(0)
  Compile Query - duration(0) start(0)
  Get Query Plan - duration(0) start(1)
  Execute Query - duration(63695) start(1)
  Get Query Plan Complexity - duration(0) start(63696)
  Get Executed Operations - duration(0) start(63696)
  Total - duration(63696) start(0)
  Async Total - duration(63696) start(0)
  </code></pre>