活动目录中的帐户过期/密码到期

时间:2013-07-18 22:29:01

标签: powershell active-directory

我在科技办公室工作,我的很多工作是重置密码/更改活动目录帐户的过期日期。由于我无法访问实际的服务器,只有我的管理工具 - >我拥有的是活动目录用户和计算机。

我每周都会收到一个用户名列表,我会查看他们的密码是否已过期,以及他们的帐户是否已过期。如果帐户过期我有一个我需要设置的日期,如果p / w过期,每个用户都有一个预定的p / w

我一直在这里阅读SA和powershell.com,试图找出一种方法来编写脚本来检查我的文件中的每个帐户并根据需要设置每个帐户;但我似乎无法获得有关帐户的信息。

我尝试了Get-LDAPUser,我尝试过使用Get-ADUser -FilterGet-ADUser username -acctExpires。我在这里一直收到一个没有cmdlet的错误,还试图看看我是否可以使用某种方式访问​​部分信息“网络用户用户 /域无效”

我不是要求答案,因为我知道我没有表现出任何工作,但如果可以这样做,我想向正确的方向迈出一步!

2 个答案:

答案 0 :(得分:1)

尝试这样的事情:

Import-Module ActiveDirectory

function FileTime2Date($time) {
  return ([datetime]::FromFileTime($time)).DateTime
}

$today = Get-Date
$userlist = Get-Content "C:\path\to\username.list"

Get-ADUser -Filter * -Properties * |
  select sAMAccountName, accountExpirationDate, @{n='passwordExpiry';
    e={FileTime2Date $_.'msDS-UserPasswordExpiryTimeComputed'}} |
  ? { $userlist -contains $_.sAMAccountName -and (
      $_.accountExpirationDate -le $today -or
      $_.passwordExpiry -le $today
    )
  }

未经测试,因为我现在手头没有AD。

答案 1 :(得分:1)

另一种方法:

# Check if the users account is expired
FUNCTION IsExpired ($Name)
{
Import-Module ActiveDirectory
$ExpirationDate=(Get-ADUser $Name -Properties 'AccountExpirationDate').AccountExpirationDate
$Result = ($ExpirationDate -lt (Get-Date))
Return $Result
}