title: Is ForEach really an alias of ForEach-Object (Powershell)
body: <p><code>ForEach</code> is documented as an alias of <code>ForEach-Object</code>. When I use <code>Get-Alias ForEach</code> it tells that it is in alias of <code>ForEach-Object</code>.</p>
  
  <p>But,</p>
  
  <ul>
  <li><p><code>ForEach-Object</code> Accepts parameters such as Begin Process and End, where <code>ForEach</code> doesn't accept them.</p>
  
  <ul>
  <li><p>When we call <code>ForEach-Object</code> without any thing it prompts for parameter Process, and on calling <code>ForEach</code> it leaves a nested prompt with <code>&gt;&gt;</code>.</p></li>
  <li><p><code>%</code> and <code>ForEach</code> behave same, but <code>ForEach-Object</code> don't.</p></li>
  </ul></li>
  </ul>
  
  <p>Here my questions are:</p>
  
  <ul>
  <li><p>Is <code>ForEach</code> really an alias of <code>ForEach-Object</code>?</p></li>
  <li><p>Which is better, <code>ForEach</code> or <code>ForEach-Object</code>?</p></li>
  </ul>
  
  <p>Please share your thoughts. </p>
  
  <p>Thank you!</p>