title: Input gets changed inside a scriptblock
body: <p>I have this script with a scriptblock:</p>
  <pre><code>$RoboArgs = @{
    Source = '01'
    Target = '02'
    ExtraArgs = '/e', '/purge'
  }
  Write-Host @RoboArgs
  Start-ThreadJob -InputObject $RoboArgs -ScriptBlock {
    . robocopy_invoke.ps1
    Write-Host @input
  } | Receive-Job -Wait -AutoRemoveJob
  </code></pre>
  <p>I want to call a function defined in the robocopy_invoke.ps1 module using the input parameter (<code>Invoke-Robocopy @RoboArgs</code>), but the input parameter's contents somehow get changed once it enters the scriptblock.
  Here's the output:</p>
  <pre><code>-Target: 02 -ExtraArgs: /e /purge -Source: 01
  System.Management.Automation.Runspaces.PipelineReader`1+&lt;GetReadEnumerator&gt;d__20[System.Object]
  </code></pre>
  <p>Why is the output different for the two <code>Write-Host</code> calls?
  How can I make the second one like the first one?</p>