Powershell:我如何查询pwdLastSet并让它有意义?

Modified on: Fri, 08 Nov 2019 00:40:03 +0800

我需要为Active Directory安全组中的一组帐户更改最后一次密码,我觉得这是PowerShell应该擅长的。

现在,我已经陷入了如何从我正在查看的AD帐户中读取pwdLastSet属性的问题。即使是像这样简单的运行:

[adsi] "LDAP://cn=user1,ou=Staff,ou=User Accounts,dc=ramalamadingdong,dc=net" | Format-List *

给出pwdLastSet的结果,如下所示:

pwdLastSet            : {System.__ComObject}

我觉得我的方式是错误的,那么查询然后格式化pwdLastSet属性的输出(值是基于Windows Epoch而不是非常人性化的)的最佳方法是什么?

作者:Bob

最佳答案

您也可以在没有管理单元的情况下执行此操作。我试过这个并且有效:

PS #> $searcher=New-Object DirectoryServices.DirectorySearcher
PS #> $searcher.Filter="(&(samaccountname=user1))"
PS #> $results=$searcher.findone()
PS #> [datetime]::fromfiletime($results.properties.pwdlastset[0])

Wednesday, June 10, 2009 4:32:08 PM

如果我的用户对象设置如下,我也会得到一个用于pwdLastSet的System .__ ComObject:
$ user = [adsi]“LDAP:// cn = user1,ou = Staff,ou = User Accounts,dc = ramalamadingdong,dc = net”

应该有一种方法可以使用[System .__ ComObject] .InvokeMember()和反射从$ user对象获取pwdLastSet值,但是我无法正确使用它。我从未弄明白,所以我使用了上面的例子并继续前进。

如果你要在AD(或Exchange或SQL Server)上做很多工作,你可能想要获取它的snapin并使用它。

作者:,Bratch

相关问答

添加新评论