2013-07-18 79 views
0

我在科技辦公室工作,我的許多工作是重置活動目錄帳戶上的密碼/更改過期日期。由於我無法訪問實際的服務器,因此我的管理工具 - >活動目錄用戶和計算機就是我所擁有的。活動目錄中的帳戶過期/密碼過期

每個星期左右我都會收到一個用戶名列表,我要檢查他們的密碼是否過期,以及他們的賬戶是否過期。如果賬戶已過期,我有一個日期,我需要設置它,如果p/w已過期,每個用戶都有一個預先確定的p/w

我一直在這裏閱讀SA和powershell.com,試圖弄清楚一種編寫腳本的方法,用於檢查我的文件中的每個帳戶並根據需要設置每個帳戶;但我似乎無法獲取有關帳戶的信息。

我已經試過Get-LDAPUser,我使用Get-ADUser -FilterGet-ADUser username -acctExpires。我守在這裏得到一個沒有cmdlet的錯誤都試過了,也試過看看我是否能在某種程度上只是訪問使用'網絡用戶用戶 /域沒有部分信息有效

我不是要求一個答案,因爲我知道我沒有顯示任何工作,但如果這可以完成,我想在正確的方向邁出一步!

回答

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

另一種方法:

# 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 
}