title: Difference between PSObject, Hashtable, and PSCustomObject
body: <p>Can anybody explain the details? If I create an object using</p>
  
  <pre><code>$var = [PSObject]@{a=1;b=2;c=3}
  </code></pre>
  
  <p>and then I look for its type using <code>getType()</code> PowerShell tells me it's of type <strong>Hashtable</strong>.</p>
  
  <p>When using <a href="http://technet.microsoft.com/en-us/library/hh849928.aspx" rel="noreferrer">Get-Member</a> (alias <code>gm</code>) to inspect the object it's obvious that a hashtable has been created, since it has a <code>keys</code> and a <code>values</code> property. So what's the difference to a "normal" hashtable?</p>
  
  <p>Also, what's the advantage of using a PSCustomObject? When creating one using something like this</p>
  
  <pre><code>$var = [PSCustomObject]@{a=1;b=2;c=3}
  </code></pre>
  
  <p>the only visible difference to me is the different datatype of <strong>PSCustomObject</strong>. Also instead of keys and value properties, a inspection with <code>gm</code> shows that now every key has been added as a NoteProperty object.</p>
  
  <p>But what advantages do I have? I'm able to access my values by using its keys, just like in the hashtable. I can store more than simple key-value pairs (key-object pairs for example) in the PSCustomObject, JUST as in the hashtable. So what's the advantage? Are there any important differences?</p>