2016-10-27 4 views
1

Ich versuche, das zu tun, folgende:Read-Host Ausführungsreihenfolge

Anzeige eine Liste von einem mehrdimensionalen Array:

$AssetList | Where-Object {$_.agenttype -eq "N"} | Select-Object number, hostname, agentstatus | Write-Output 

Dann in einer Reihe vom Benutzer gelesen:

$Victim = Read-Host -Prompt 'Enter the number of the host you want rid of...' 

Was in der Realität passiert, ist, dass der Read-Host vor der Write-Ausgabe angezeigt wird. Wie kann ich es umdrehen und es umkehren?

+1

Mögliches Duplikat [leider nicht möglich, Pause oder Ruhe nach Select-Object] (http://stackoverflow.com/questions/34835327/unable-to-pause-or-sleep-after-select -Objekt) – PetSerAl

+0

Meine Lösung war, Out-String anstelle von Write-Output zu verwenden. Diese Lösung scheint auch nicht zu erwähnen ... –

Antwort

0

Ich denke, das Problem hier ist, dass Sie Write-Output verwenden (die in den Ausgabestream für Ihr Skript/Funktion schreibt). Wenn Sie möchten, dass die Daten nur auf der Konsole vor dem Cmdlet Read-Host angezeigt werden, versuchen Sie es mit Out-String | Write-Host. Sie können wahrscheinlich mit nur Out-String alleine davonkommen.

Out-String

Der Out-String Cmdlets konvertiert die Objekte, die Windows Powershell von Strings in ein Array verwaltet. Standardmäßig akkumuliert Out-String die Zeichenfolgen und gibt sie als eine einzelne Zeichenfolge zurück. Sie können jedoch den Stream-Parameter verwenden, um Out-String zu veranlassen, jeweils eine Zeichenfolge zurückzugeben. Mit diesem Cmdlet können Sie die Zeichenfolgenausgabe wie in traditionellen Shells mit suchen und bearbeiten, wenn die Objektmanipulation weniger praktisch ist.

https://technet.microsoft.com/en-us/library/hh849952.aspx

+0

Perfekt! Danke, Charlie. –