2017-07-14 1 views
0

Ich schreibe ein einfaches Skript, das ein Menü anzeigt, in dem man aus verschiedenen Skripten wählen kann. Eines dieser Skripte sollte den Ort zurückgeben, an dem ein Benutzerkonto gesperrt wurde.Powershell gibt Ausgabe zu spät zurück falsche Position

Das Skript I ist diese hier verwenden möchten: https://gallery.technet.microsoft.com/scriptcenter/Get-LockedOutLocation-b2fd0cab

Ich habe drei Zeilen am Ende des Skripts so, dass ich die Ausgabe lesen, bevor das Fenster geschlossen wird:

$username = Read-Host 'Please enter a username' 
    Get-LockoutLocation -Identity $username 
    Read-Host 'Press a key to quit' 

Das Skript mit diesem Befehl ausgeführt wird:

start powershell -ArgumentList '.\get-lockout-location.ps1' 

Als ich das Skript ausführen, gibt es zuerst die Domänencontroller die hat das Konto gesperrt. Das nächste, was erscheint, ist die Zeile, die nach einem Tastendruck fragt, um zu beenden. Und am Ende kommt die Ausgabe aus dem Ereignisprotokoll.

Weiß jemand, was ich ändern muss, damit die Taste drücken Linien ist das letzte, was erscheint? Ich habe schon ziemlich viele Dinge ausprobiert (Ausführen von einer anderen Datei, Verteilen der Ausgabe, Entfernen des Prozessteils, Setzen der Read-Host-Zeile an eine andere Position) und nichts davon funktionierte.

+0

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

Antwort

0

Das passiert, weil der Autor dieses Skripts die Formatierung auf der ersten Ausgabeseite erzwingt, nicht aber auf der zweiten.

Ändern der letzte Foreach() Schleife:

$Events = Foreach($Event in $LockedOutEvents) 
{    
    If($Event | Where {$_.Properties[2].value -match $UserInfo.SID.Value}) 
    { 

     $Event | Select-Object -Property @( 
     @{Label = 'User';    Expression = {$_.Properties[0].Value}} 
     @{Label = 'DomainController'; Expression = {$_.MachineName}} 
     @{Label = 'EventId';   Expression = {$_.Id}} 
     @{Label = 'LockedOutTimeStamp'; Expression = {$_.TimeCreated}} 
     @{Label = 'Message';   Expression = {$_.Message -split "`r" | Select -First 1}} 
     @{Label = 'LockedOutLocation'; Expression = {$_.Properties[1].Value}} 
    ) 

    }#end ifevent 

}#end foreach lockedout event 
$Events |Format-List 
+0

Vielen Dank das hat funktioniert :) – Nebucatnetzer

Verwandte Themen