title: Should I implement the IPropertyCmdletProvider interface for a PowerShell Cmdlet?
body: <p>I'm writing a <a href="http://msdn.microsoft.com/en-us/library/system.management.automation.provider.navigationcmdletprovider(VS.85).aspx" rel="nofollow noreferrer">NavigationCmdletProvider</a> for PowerShell. Through the <a href="http://msdn.microsoft.com/en-us/library/system.management.automation.provider.itemcmdletprovider.getitem(VS.85).aspx" rel="nofollow noreferrer">GetItem</a> and <a href="http://msdn.microsoft.com/en-us/library/system.management.automation.provider.containercmdletprovider.getchilditems(VS.85).aspx" rel="nofollow noreferrer">GetChildItems</a> overrides, there are various types of objects that are written to the pipeline.</p>
  <p>The docs for <a href="http://msdn.microsoft.com/en-us/library/system.management.automation.provider.ipropertycmdletprovider(VS.85).aspx" rel="nofollow noreferrer">IPropertyCmdletProvider</a> interface tell us the following:</p>
  <blockquote>
  <p>Developers should implement this
  interface under the following
  conditions:</p>
  <ul>
  <li>When users must use cmdlets such as the Get-Property and Set-Property
  cmdlets.</li>
  <li>For a providers that derive from the ItemCmdletProvider,
  ContainerCmdletProvider, or
  NavigationCmdletProvider classes.</li>
  </ul>
  </blockquote>
  <h3>Confusion:</h3>
  <p>Not a lot of useful information in my opinion because how would a user know if they <em>must</em> use the Get-Property and Set-Property cmdlet's?  I would imagine that's up to the Cmdlet author. The big confusion (for me at least) is if the Cmdlet writes the objects to the pipeline; and those objects have properties exposed that are callable (i.e. get/set); what benefits does calling Get-Property/Set-Property have over manipulating the object(s) directly?</p>
  <h3>Question:</h3>
  <p>Under what circumstances should the IPropertyCmdletProvider interface be implemented?</p>
  <p>I know I'm missing something here! Any insight would be greatly appreciated.</p>