![如何从 ActiveDirectory 读取属性“ms-Mcs-AdmPwdExpirationTime”](https://linux22.com/image/1543484/%E5%A6%82%E4%BD%95%E4%BB%8E%20ActiveDirectory%20%E8%AF%BB%E5%8F%96%E5%B1%9E%E6%80%A7%E2%80%9Cms-Mcs-AdmPwdExpirationTime%E2%80%9D.png)
我正在尝试阅读管理员密码过期时间从ActiveDirectory
:
Dim DC = New PrincipalContext(ContextType.Domain)
Dim cmp = ComputerPrincipal.FindByIdentity(DC, hostnm)
Dim desting As String = cmp.DistinguishedName
Dim de As New DirectoryEntry("LDAP://" & desting)
pwdexp = de.Properties("ms-Mcs-AdmPwdExpirationTime").Value.ToString()
然而,管理员密码过期时间可以轻松读取电源外壳:
$TestValue = [adsi]"LDAP://CN=xxx,OU=xxx,OU=xxx,OU=xxx,OU=xxx,DC=xxx,DC=xxx,DC=xx"
$TestValue.ConvertLargeIntegerToInt64($Testvalue."ms-Mcs-AdmPwdExpirationTime"[0])
有趣的是,但我可以读取另一个参数ms-Mcs-AdmPwd
:
Dim DC = New PrincipalContext(ContextType.Domain)
Dim cmp = ComputerPrincipal.FindByIdentity(DC, hostnm)
Dim desting As String = cmp.DistinguishedName
Dim de As New DirectoryEntry("LDAP://" & desting)
pwdexp = de.Properties("ms-Mcs-AdmPwdExpirationTime").Value.ToString()
并且可以从调试器中看到值:
如何正确读取属性ms-Mcs-AdmPwdExpirationTime
?
答案1
这在 powershell 中对我有用:
$comp = Get-ADComputer Laptop8 -Properties ms-MCS-AdmPwdExpirationTime
$([datetime]::FromFileTime([convert]::ToInt64($comp.'ms-MCS-AdmPwdExpirationTime',10)))
祝你好运 Sem
答案2
https://www.rlmueller.net/Integer8Attributes.htm
Active Directory 中的许多属性都具有称为 Integer8 的数据类型(语法)。这些 64 位数字(8 字节)通常以 100 纳秒为间隔表示时间。如果 Integer8 属性是日期,则该值表示自 1601 年 1 月 1 日凌晨 12:00 以来的 100 纳秒间隔数。任何闰秒都会被忽略。
在 .NET Framework(和 PowerShell)中,这些 100 纳秒的间隔称为“刻度”,相当于千万分之一秒。每毫秒有 10,000 个刻度。此外,.NET Framework 和 PowerShell DateTime 值将日期表示为自 0001 年 1 月 1 日凌晨 12:00 以来的刻度数。
ADSI 自动使用 IADsLargeInteger 接口来处理这些 64 位数字。此接口有两个属性方法 HighPart 和 LowPart,它们将数字拆分为两个 32 位数字。HighPart 和 LowPart 属性方法返回 -2^31 和 2^31 - 1 之间的值。此 VBScript 程序演示了处理这些属性的标准方法,以检索域 lockoutDuration 值(以分钟为单位)。
答案3
cls;$error.clear()
$computer = Read-host "Enter the name of the computer"
$LocalAdmin = "" | Select Computer,AdmPwd,Expires
$LocalAdmin.Computer = $Computer
$LocalAdmin.AdmPwd = $(Get-ADComputer $computer -Properties ms-MCS-AdmPwd | select -ExpandProperty ms-MCS-AdmPwd)
$FileTime = Get-ADComputer $computer -Properties ms-MCS-AdmPwdExpirationTime
$LocalAdmin.Expires = $([datetime]::FromFileTime([convert]::ToInt64($FileTime.'ms-MCS-AdmPwdExpirationTime',10)))
$LocalAdmin | ft -AutoSize