列出非域系统上所有用户的上次Windows密码更改

时间:2017-10-04 18:27:01

标签: windows powershell system-administration

对于连接到AD域控制器的系统,我找到了这个问题的答案。但是,这个问题适用于不可能连接到域控制器的独立系统。基本上,气隙系统。

简短又甜蜜:有没有办法列出每个用户最后一次更改非域空气系统(Windows 7或10)的Windows密码,无论是批处理文件还是PowerShell脚本?

我知道网络用户{username} | find / I“密码最后一次设置”将一次为他们做一个。但是,每台机器运行多次是很繁琐的,而且我们有60多种这种类型的系统。所以,如果可能的话,我正在寻找一种方法来做到这一点。

作为一个警告,我们没有选择在PowerShell中安装activedirectory模块。此外,由于大多数系统都是Windows 7,因此我们无法访问Windows 10中可用的Bash命令行工具。

对此有任何和所有帮助表示赞赏。

1 个答案:

答案 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}}
  }
}