对于连接到AD域控制器的系统,我找到了这个问题的答案。但是,这个问题适用于不可能连接到域控制器的独立系统。基本上,气隙系统。
简短又甜蜜:有没有办法列出每个用户最后一次更改非域空气系统(Windows 7或10)的Windows密码,无论是批处理文件还是PowerShell脚本?
我知道网络用户{username} | find / I“密码最后一次设置”将一次为他们做一个。但是,每台机器运行多次是很繁琐的,而且我们有60多种这种类型的系统。所以,如果可能的话,我正在寻找一种方法来做到这一点。
作为一个警告,我们没有选择在PowerShell中安装activedirectory模块。此外,由于大多数系统都是Windows 7,因此我们无法访问Windows 10中可用的Bash命令行工具。
对此有任何和所有帮助表示赞赏。
答案 0 :(得分:2)
以下是使用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}}
}
}