列出AD用户Lockout 位置

简介:

有没有方法列出用户AD 用户在哪里lockout呢?可以参考如下微软网站上列出的Powershell 模板

 

 
  1. #Requires -Version 2.0  
  2. Function Get-LockedOutLocation  
  3. {  
  4. <#  
  5. .SYNOPSIS  
  6.     This function will locate the computer that processed a failed user logon attempt which caused the user account to become locked out.  
  7.  
  8. .DESCRIPTION  
  9.     This function will locate the computer that processed a failed user logon attempt which caused the user account to become locked out.   
  10.     The locked out location is found by querying the PDC Emulator for locked out events (4740).    
  11.     The function will display the BadPasswordTime attribute on all of the domain controllers to add in further troubleshooting.  
  12.  
  13. .EXAMPLE  
  14.     PS C:\>Get-LockedOutLocation -User Joe.Davis  
  15.  
  16.  
  17.     This example will find the locked out location for Joe Davis.  
  18. .NOTE  
  19.     This function is only compatible with an environment where the domain controller with the PDCe role to be running Windows Server 2008 SP2 and up.    
  20.     The script is also dependent the ActiveDirectory PowerShell module, which requires the AD Web services to be running on at least one domain controller.  
  21.     Author:Jason Walker  
  22.     Last Modified: 12/7/2012  
  23. #>  
  24.     [CmdletBinding()]  
  25.  
  26.     Param(  
  27.       [Parameter(Mandatory=$True)]  
  28.       [String]$Identity        
  29.     )  
  30.  
  31.     Begin 
  32.     {   
  33.         $DCCounter = 0   
  34.         $LockedOutStats = @()     
  35.                   
  36.         Try  
  37.         {  
  38.             Import-Module ActiveDirectory -ErrorAction Stop  
  39.         }  
  40.         Catch  
  41.         {  
  42.            Write-Warning $_  
  43.            Break  
  44.         }  
  45.     }#end begin 
  46.     Process  
  47.     {  
  48.           
  49.         #Get all domain controllers in domain  
  50.         $DomainControllers = Get-ADDomainController -Filter *  
  51.         $PDCEmulator = ($DomainControllers | Where-Object {$_.OperationMasterRoles -contains "PDCEmulator"})  
  52.           
  53.         Write-Verbose "Finding the domain controllers in the domain" 
  54.         Foreach($DC in $DomainControllers)  
  55.         {  
  56.             $DCCounter++  
  57.             Write-Progress -Activity "Contacting DCs for lockout info" -Status "Querying $($DC.Hostname)" -PercentComplete (($DCCounter/$DomainControllers.Count) * 100)  
  58.             Try  
  59.             {  
  60.                 $UserInfo = Get-ADUser -Identity $Identity  -Server $DC.Hostname -Properties AccountLockoutTime,LastBadPasswordAttempt,BadPwdCount,LockedOut -ErrorAction Stop  
  61.             }  
  62.             Catch  
  63.             {  
  64.                 Write-Warning $_  
  65.                 Continue 
  66.             }  
  67.             If($UserInfo.LastBadPasswordAttempt)  
  68.             {      
  69.                 $LockedOutStats += New-Object -TypeName PSObject -Property @{  
  70.                         Name                   = $UserInfo.SamAccountName  
  71.                         SID                    = $UserInfo.SID.Value  
  72.                         LockedOut              = $UserInfo.LockedOut  
  73.                         BadPwdCount            = $UserInfo.BadPwdCount  
  74.                         BadPasswordTime        = $UserInfo.BadPasswordTime              
  75.                         DomainController       = $DC.Hostname  
  76.                         AccountLockoutTime     = $UserInfo.AccountLockoutTime  
  77.                         LastBadPasswordAttempt = ($UserInfo.LastBadPasswordAttempt).ToLocalTime()  
  78.                     }            
  79.             }#end if  
  80.         }#end foreach DCs  
  81.         $LockedOutStats | Format-Table -Property Name,LockedOut,DomainController,BadPwdCount,AccountLockoutTime,LastBadPasswordAttempt -AutoSize  
  82.  
  83.         #Get User Info  
  84.         Try  
  85.         {    
  86.            Write-Verbose "Querying event log on $($PDCEmulator.HostName)" 
  87.            $LockedOutEvents = Get-WinEvent -ComputerName $PDCEmulator.HostName -FilterHashtable @{LogName='Security';Id=4740} -ErrorAction Stop | Sort-Object -Property TimeCreated -Descending  
  88.         }  
  89.         Catch   
  90.         {            
  91.            Write-Warning $_  
  92.            Continue 
  93.         }#end catch       
  94.                                    
  95.         Foreach($Event in $LockedOutEvents)  
  96.         {              
  97.            If($Event | Where {$_.Properties[2].value -match $UserInfo.SID.Value})  
  98.            {   
  99.                 
  100.               $Event | Select-Object -Property @(  
  101.                 @{Label = 'User';               Expression = {$_.Properties[0].Value}}  
  102.                 @{Label = 'DomainController';   Expression = {$_.MachineName}}  
  103.                 @{Label = 'EventId';            Expression = {$_.Id}}  
  104.                 @{Label = 'LockedOutTimeStamp'; Expression = {$_.TimeCreated}}  
  105.                 @{Label = 'Message';            Expression = {$_.Message -split "`r" | Select -First 1}}  
  106.                 @{Label = 'LockedOutLocation';  Expression = {$_.Properties[1].Value}}  
  107.               )  
  108.                                                   
  109.             }#end ifevent  
  110.               
  111.        }#end foreach lockedout event  
  112.          
  113.     }#end process  
  114.      
  115. }#end function 
  116. 本文转自 VirtualTom 51CTO博客,原文链接:http://blog.51cto.com/virtualtom/1130179,如需转载请自行联系原作者
目录
相关文章
|
6月前
|
存储 域名解析 网络协议
AD域的搭建和操作使用
AD域的搭建和操作使用
|
25天前
|
存储 监控 BI
如何设置AD域用户仅登录到指定的计算机?AD域管理软件
本文介绍了如何使用AD域服务限制用户仅能登录特定计算机,包括通过属性设置和脚本实现。此外,提到了ADManagerPlus这款工具,它能够批量管理AD域用户,包括创建、修改用户信息,分配权限,并通过报表监控用户状态,有效提升AD域管理效率。
|
数据安全/隐私保护