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

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

Link zu diesem Kommentar

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.

Link zu diesem Kommentar

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

Link zu diesem Kommentar

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

 

Link zu diesem Kommentar

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

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...