如何在 LockoutStatus 中找到原始锁定服务器信息

如何在 LockoutStatus 中找到原始锁定服务器信息

我有一个帐户一直被锁定,但这种情况发生在晚上,我们无法记录日志或抓取日志。所以我想写一个 powershell 脚本来帮我记录这些日志。

我正在使用 AL TOOLs。在 ALTools 中,有一个称为 LockoutStatus 的程序,该程序中有一个称为原点锁定

我只是想知道这些信息是从哪里收集的,是来自事件还是来自用户?

我只需要原点锁定信息

请参阅下面的截图

在此处输入图片描述

答案1

老话题,但我想我会添加到@Zach Bolinger 的精彩帖子中,希望它能帮助到其他人。

这将输出MyUsername was locked out on MY-DC03 at 04/02/2022 09:06:24"

可能存在更合适的解析方式,LastOriginatingChangeDirectoryServerIdentity如下所示:

CN=NTDS Settings,CN=MY-DC03,CN=Servers,CN=Core,CN=Sites,CN=Configuration,DC=MyOrg,DC=co,DC=uk

  • 我选择用逗号(​​,)来分隔;
  • 取第二个标记(ID=1),即CN=MY-DC03
  • 然后用等号(=)将其分开;
  • 最后再次取出第二个token(ID=1),也就是服务器名称MY-DC03
$UserToLookup = "MyUsername"
$DomainController = "MY-DC01"
$LockedAccount = Get-ADUser $UserToLookup
$LockedObjectPath = $LockedAccount.DistinguishedName
$LockoutReplicationRecord = Get-ADReplicationAttributeMetadata -object "$LockedObjectPath" -server $DomainController | where {$_.AttributeName -eq "lockoutTime"}
$LockoutServer = (((($LockoutReplicationRecord.LastOriginatingChangeDirectoryServerIdentity).split(","))[1]).split("="))[1]
$LockoutTime = $LockoutReplicationRecord.LastOriginatingChangeTime
Write-Host "$UserToLookup was locked out on $LockoutServer at $LockoutTime"

答案2

LockoutStatus 的文档对该字段的定义如下:

原点锁定:显示锁定帐户的域控制器(LockoutTime对该用户的属性进行原始写入的域控制器)。

您可以从复制元数据访问属性特性。

$LockedAccount=Get-ADUser [username here - no quotes needed]
$LockedObjectPath=$LockedAccount.DistinguishedName
$DomainController=([system.directoryservices.activedirectory.domain]::GetCurrentDomain()).DomainControllers[0].Name
$LockoutReplicationRecord=Get-ADReplicationAttributeMetadata -object "$LockedObjectPath" -server $DomainController | where {$_.AttributeName -eq "lockoutTime"}
Write-Host "$($LockoutReplicationRecord.LastOriginatingChangeDirectoryServerIdentity)"

仅解析该行以获取服务器名称。

我在 2012 域上执行此操作,但我认为所有这些代码在 2008 上都可以运行。到目前为止,我尝试的所有测试用例都被具有 FSMO 角色的服务器锁定,因此我不确定这是否会给出您期望的输出。看起来您有一个很好的环境可以尝试一下。此代码仅获取列表中的第一个域控制器,我想您将循环遍历它们以获取每个域控制器上的错误密码计数。在这种情况下,替换您已经使用的任何变量,只要它是文本格式的服务器名称(不必像此代码一样是 FQDN)

我无法确认这是LockoutStatus.exe使用的相同信息,但运行所需的时间相同,而且对我来说,输出匹配。

相关内容