TheCracked 13 Geschrieben 5. April 2018 Melden Geschrieben 5. April 2018 Hallo Zusammen, hier der codeschnipsel: ...... If ($result -notlike '') { Write-Output $result $remotesession = Read-Host "Wollen Sie eine Remotesitzung zu diesem PC starten? ja / nein" if ($remotesession -like "ja") { Write-Output BLA ... } Die Ausgabe sieht so aus: Bitte geben Sie den zu suchenden User ein:: XYZ Wollen Sie eine Remotesitzung zu diesem PC starten? ja / nein: ja Computername Mitarbeiter ------------ ----------- LAPXYZ HUBERMAIER BLA Warum sieht die Ausgabe nicht so aus? Das " Write-Output $result" kommt ja vor dem "$remotesession = Read-Host "Wollen Sie eine Remotesitzung zu diesem PC starten? ja / nein" . Versteh nicht, warum der write-output ganz am ende erst kommt. Ist das normal so? Bitte geben Sie den zu suchenden User ein:: XYZ Computername Mitarbeiter ------------ ----------- LAPXYZ HUBERMAIER Wollen Sie eine Remotesitzung zu diesem PC starten? ja / nein: ja BLA Viele Grüße TC
BOfH_666 586 Geschrieben 5. April 2018 Melden Geschrieben 5. April 2018 Write-Output schreibt die Ausgabe in die Pipeline. Write-Host und die Read-Host - Aufforderung schreiben direkt in die Konsole. Das sind verschiedene Streams, die die Powershell unterschiedlich sortiert. Da gewinnt so gut wie immer Write-Host. Wenn die Reihenfolge wichtig ist, musst Du bei so einem Konstrukt wohl Write-Host verwenden. .... oder einen anderen Ansatz für die nötigen Anwender-Eingaben finden. z.B. eine Funktion zu benutzen mit einem "mandatory" Parameter.
TheCracked 13 Geschrieben 6. April 2018 Autor Melden Geschrieben 6. April 2018 Ach ok. Jetzt sieht es fast besser aus.. Die Ausgabe über " Write-host $result " sieht jetzt ein bisschen unschön aus: @{Computername=xyz; Mitarbeiter=BLA} $result hat den Type: TypeName: Selected.Microsoft.ActiveDirectory.Management.ADComputer Wie bekomme ich das ein bisschen formatierter hin so wie es write-host macht.. Computername Mitarbeiter ------------ ----------- xyz BLA Grüße TC
BOfH_666 586 Geschrieben 6. April 2018 Melden Geschrieben 6. April 2018 Tjaaaa .... da kannst Du mal sehen, was die Powershell unter der Haube alles implizit für Dich tut. Ohne Deinen Code zu kennen, kannst Du entweder die Ausgabe Deinen Wünschen entsprechend anpassen, oder die Abfrage der nötigen Informationen vom Anwender auf eine andere Methode umstellen. Dann könntest Du die einfache Ausgabe über Write-Output beibehalten. Die Ausgabe anpassen könntest Du vielleicht so: Write-host "ComputerName:`t'$($result.ComputerName)'`nMitarbeiter:`t'$($result.Mitarbeiter)'" Das sollte dann ungefähr so aussehen: Computername: xyz Mitarbeiter: BLA
TheCracked 13 Geschrieben 6. April 2018 Autor Melden Geschrieben 6. April 2018 (bearbeitet) Diese Powershell so mächtig :) jetzt ist es nur so, dass eventuell das Ergebnis mehrere Computernamen zurückgibt.. Das sieht dann derzeit mit deinem Vorschlag so aus: ComputerName: 'XYZ ABC LDF' Mitarbeiter: 'HANS HUBER EINHORN' muss ich da am besten eine foreach bauen, mit der ich das schön ausgebe? edit: so siehts ganz ordentlich aus: $result |Format-Table| Out-String|% {Write-Host $_} bearbeitet 6. April 2018 von TheCracked
BOfH_666 586 Geschrieben 6. April 2018 Melden Geschrieben 6. April 2018 vor 20 Minuten schrieb TheCracked: so siehts ganz ordentlich aus: Supi.
TheCracked 13 Geschrieben 6. April 2018 Autor Melden Geschrieben 6. April 2018 (68,97,110,107,101,32,102,117,101,114,32,100,101,105,110,101,32,72,105,108,102,101,32,58,41 |%{[char]$_})-join ''
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden