Jump to content

Powershell Ausgabe reihenfolge


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Geschrieben

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

Geschrieben

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.

Geschrieben

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

Geschrieben

Tjaaaa ....  da kannst Du mal sehen, was die Powershell unter der Haube alles implizit für Dich tut.  ;-)  :D

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

 

Geschrieben (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 von TheCracked
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

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 erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...