title: What's the right way to emit errors in powershell module functions?
body: <p>I've read quite a bit on powershell error handling and now I'm quite confused about what I should be doing on any given situation (error handling). I'm working with powershell 5.1 (not core).
  With that said:
  Suppose I have a module with a function that would look like this mock:</p>
  
  <pre><code>function Set-ComputerTestConfig {
    [CmdletBinding()]
    param(
      [Parameter(Position=0, Mandatory=$true)]
      [ValidateNotNullOrEmpty()]
      [string] $Name)
  
  begin { ... }
  process { 
   # task 1
   # task 2 =&gt; results in a failure that prevents further tasks
   # task 3
   # task 4
  }
  end { ... }
  </code></pre>
  
  <p>Let's say that for each computer name that I pass to this function, I have 4 tasks to complete, but if any of the tasks fail, I can't continue with the remaining tasks.
  How should I be producing an error (best practice) such that it halts "process" for this particular computer name but effectively continues to process the pipeline? </p>