2017-07-14 50 views
0

我在寫一個簡單的腳本,顯示一個菜單,可以從各種腳本中進行選擇。其中一個腳本應返回鎖定用戶帳戶的位置。Powershell返回輸出太遲在錯誤的位置

我想使用這個腳本是這樣的一個位置: https://gallery.technet.microsoft.com/scriptcenter/Get-LockedOutLocation-b2fd0cab

我添加三行腳本的末尾,這樣我可以讀取輸出窗口被關閉前:

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

腳本獲取與此命令執行:

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

當我執行腳本它首先返回域控制器,其鎖定帳戶。然而,接下來出現的是要求重要新聞稿退出的線路。最後來自事件日誌的輸出。

有人知道我必須改變,以便按鍵行是最後出現的東西嗎?我已經嘗試了很多東西(從不同的文件執行,管道輸出,刪除處理部分,將Read-Host行放在不同的位置),但它們都不起作用。

+0

的可能的複製[無法暫停或睡眠後選擇-對象(https://stackoverflow.com/questions/34835327/unable-to-pause-或選擇後選擇對象) – PetSerAl

回答

0

發生這種情況是因爲該腳本的作者強制對第一組輸出進行格式化,而不是第二組輸出。

改變最後Foreach()環路:

$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

非常感謝你這工作:) – Nebucatnetzer

相關問題