title: Difference in pipeline type
body: <p>Why does:</p>
  
  <pre><code>Invoke-Command -ScriptBlock { Get-Service } -ComputerName SERVER01 | Get-Member
  </code></pre>
  
  <p>return TypeName: Deserialized.System.ServiceProcess.ServiceController</p>
  
  <p>But:</p>
  
  <pre><code>Invoke-Command -ScriptBlock { Get-Service } -ComputerName SERVER01 | % { $_.GetType() }
  </code></pre>
  
  <p>returns a type <code>Name</code> of <code>PSObject</code> and <code>BaseType</code> of <code>System.Object</code>?</p>
  
  <p><strong>Edit:</strong> I understand that the object that comes back from <code>Invoke-Command</code> is Deserialized. It just seems odd that the same object is reported as a different type by <code>GetType()</code> and <code>Get-Member</code>.</p>
  
  <pre><code>PS C:\src\t&gt; $gss = Invoke-Command -ScriptBlock { Get-Service } -ComputerName SERVER01
  
  PS C:\src\t&gt; $gss[0].GetType()
  
  IsPublic IsSerial Name                                     BaseType
  -------- -------- ----                                     --------
  True     True     PSObject                                 System.Object
  
  PS C:\src\t&gt; $gss[0] | Get-Member
  
     TypeName: Deserialized.System.ServiceProcess.ServiceController
  </code></pre>