title: Powershell: Colon in commandlet parameters
body: <p>What's the deal with Powershell commandlet switch parameters that require a colon?</p>
  
  <p>Consider Exchange 2010 management shell cmdlet <a href="http://technet.microsoft.com/en-us/library/dd298068.aspx">Move-ActiveMailboxDatabase</a>. The Confirm switch is a <code>System.Management.Automation.SwitchParameter</code> and must be used like so,</p>
  
  <pre><code>Move-ActiveMailboxDatabase -Confirm:$false
  </code></pre>
  
  <p>Without the colon the command fails to recognize the don't confirm switch like so,</p>
  
  <pre><code>Move-ActiveMailboxDatabase -Confirm $false
  </code></pre>
  
  <p>Why is that? What's the difference the colon makes there? Why Exchange2010 seems to be about the only thing I've noticed this behavior?</p>
  
  <p>I've browsed through Powershell in Action and Powershell 2.0, but didn't find anything about this syntax. Scope resolution and .Net object access uses are documented on those books though.</p>
  
  <p>My Google-fu found an <a href="http://www.tellingmachine.com/post/The-PowerShell-Usage-Of-Colon-%28Punctuation%29-Under-The-Scope.aspx">article</a> which claims that it explicitly forwards switch parameter values, but fails to explain what that is about.</p>