O Powershell parece ser sensível ao que recebe como entrada padrão (usando < para redirecionar stdin). Pode estar recebendo caracteres que não está esperando. Eu recomendaria remover todas as novas linhas e salvar seu script no bloco de notas. Então, o seu script seria algo como isto:
$instance = ''; $latest_output = "Hi"; $cmd = "etc...
Com os poucos testes que fiz, recebi comportamentos diferentes de acordo com a codificação, o espaço em branco e os caracteres usados. Pode ser apenas a maneira como o cmd redireciona a entrada.
Você também pode postar seu problema no projeto de fantoches do powershell no github.
Além disso, talvez você não queira usar o write-host, pois ele é um stdout para o console e pode ser um problema também.
Em uma nota ligeiramente não relacionada, tente isto:
$psi = New-Object System.Diagnostics.ProcessStartInfo;
$psi.FileName = "powershell.exe"
$psi.UseShellExecute = $false
$psi.RedirectStandardInput = $true
$p = [System.Diagnostics.Process]::Start($psi)
Pressione ctrl-c e você verá algo assim:
PS C:\> PS C:\>
O Powershell definitivamente exibe um comportamento estranho quando se trata de redirecionamento de entrada.