列出所有用户在非域名系统上的最后一次Windows密码更改
问题描述:
我已经为连接到AD域控制器的系统找到了此问题的答案。但是,这个问题适用于无法连接到域控制器的独立系统。基本上,气隙系统。列出所有用户在非域名系统上的最后一次Windows密码更改
短而甜:有没有一种方法可以列出每个用户最后一次将非密码空闲系统(Windows 7或10)的Windows密码更改为批处理文件或PowerShell脚本?
我知道net user {username} |找到/我“上次设置的密码”将一次为他们做。然而,每台机器运行多次会很繁琐,而且我们有超过60个这种类型的系统。所以如果可能的话,我正在寻找一种方法来做到这一点。
作为一个告诫,我们没有选择在PowerShell中为此安装activedirectory模块。此外,由于大多数系统是Windows 7,我们无法访问Windows 10中可用的Bash命令行工具。
任何和所有关于此的帮助表示赞赏。
答
下面是一个使用ADSI WinNT提供一种方法:
$computerName = [Net.Dns]::GetHostName() # i.e., local computer
$computer = [ADSI] "WinNT://$computerName,Computer"
$childObjects = $computer.Children
foreach ($childObject in $childObjects) {
if ($childObject.Class -eq "User") {
if ($childObject.PasswordAge[0] -gt 0) {
$pwdLastSet = (Get-Date).AddSeconds(-$childObject.PasswordAge[0])
}
else {
$pwdLastSet = $null
}
$childObject | Select-Object `
@{Name="AdsPath"; Expression={$_.AdsPath}},
@{Name="PasswordLastSet"; Expression={$pwdLastSet}}
}
}
不'NET USER'列表中的本地帐户?你可以编写一个调用'NET USER'获取账户的批处理脚本,然后遍历该列表并调用'NET USER {username} |找到/我“密码上次设置”? – aphoria
是的,NET USER列出所有本地帐户。但是,NET USER以一种格式返回它的输出,由于字段的设置方式,我不确定如何处理。否则,是的,一个简单的NET USER运行并将其管道化为文本文件并通过循环机制读取它将是一个简单的选择。 – EvilEuro