2015-03-13 164 views
0

在Active Directory中創建的所有新用戶帳戶都保持禁用狀態,選中「用戶必須在下次登錄時更改密碼」選項。這個賬戶將被禁用7天,並且在第8天需要啓用。創建賬戶已經由另一個腳本完成,並且我被阻止了賬戶啓用部分。使用PowerShell啓用AD帳戶

如何使用PowerShell腳本存檔啓用這些帳戶?如何使用lastlogon日期,帳戶創建日期,帳戶狀態(禁用)等所有帳戶屬性以及「用戶必須在下次登錄時更改密碼」選項進行驗證並找到用戶是需要啓用的新用戶?

get-aduser -f {-not (lastlogontimestamp -like "*") -and (enabled -eq $false) -and (pwdLastSet -eq 0)} | 
    Select-Object name,SamAccountName | 
    export-csv -path data.csv 
+3

你試過了什麼?堆棧溢出不是代碼寫入服務;預計您已經嘗試了您自己的解決方案,並且需要修復它的幫助。 – alroc 2015-03-13 13:35:48

+0

我試過的命令在下面給出,但是這個無法檢查用戶已經通過了禁用期的7天.. get-aduser -f {-not(lastlogontimestamp -like「*」)-and(enabled -eq $ false )和(pwdLastSet -eq 0)} |選擇對象名稱,SamAccountName | export-csv -path data.csv – rpr 2015-03-13 15:22:17

+0

好的,你已經展示了你如何製作數據,但是你如何描述WRT試圖使用它? – alroc 2015-03-13 16:03:38

回答

0

使用過濾器根據您的標準來篩選。這段代碼獲取用戶對象的帳戶被禁用,然後篩選出那些不到一週的舊帳戶。它將它們存儲在一組用戶對象中。您可以使用$variable | $variable where { [filter] }格式通過任何用戶對象屬性進一步過濾$ userlist。過濾器可以像你想的那樣複雜。我喜歡在每一行放一個,這樣我就可以輕鬆地評論給定的過濾器。使用過濾的列表爲任何你想要的。

$WeekAgoDate = $(Get-Date).addDays(-7) 

$userlist = get-aduser -filter { enabled -eq $false } -Properties * 
$userlist = $userlist | Where { $_.created -lt $WeekAgoDate } 
"$userlist.count accounts found" 
$userlist | select name, samaccountname | format-table 

啓用$ userlist: $ userlist | Enable-ADAccount

+0

'Get-ADUser -filter {(enabled -eq $ false)-and(pwdLastSet -eq 0) - and -not(lastlogontimestamp -like」*「) } -Properties whencreated | Where-Object {$ _。whencreated -gt(get-date).adddays(-7)} | select name,SamAccountName,whenCreated | export-csv -path data.csv -NoTypeInformation' 上述命令很好地收集用戶信息..但是,如果我需要通過LDAP進行通信,我需要如何更改此代碼..?我完全不熟悉這個.. :( – rpr 2015-03-14 07:18:26

+0

我對LDAP沒有經驗,我知道當你使用Get-ADUser時,你可以使用-LDAPFilter而不是-Filter。你是說你需要在不同的域中運行它?您在其他評論中使用的構建LDAP搜索器的方法是針對Powershell v1或v2完成的,無需訪問ActiveDirectory Powershell模塊。 一般而言,一旦你拉動用戶列表,你需要做些什麼? – Xalorous 2015-03-26 21:33:16

0

這裏是你如何能做到這一點,但你需要編寫腳本:

檢查whenCreated屬性,它也有一個日期時間標記,你可以用它來查看該帳戶是多大。

如果該帳戶是老年人則7天,該帳戶被禁用集userAccountControl屬性啓用IE 512然後設置你的用戶必須更改密碼屬性真正

+0

如果您只是領導OP,那麼這將作爲評論更好地發揮作用。 – Matt 2015-03-13 16:37:16

+0

是有人可以幫助我詳細說明這一點。正如我前面提到的,我總是對此新的.. :( $ Domain =「dc = XYZ,dc = ABCD,dc = Domain,dc = net」 $ root = New_Object System.DirectoryServices.DirectoryEntry(「LDAP://」+ $ Domain) $ searcher = New-Object System.DirectoryServices.DirectorySearcher($ root) $ searcher.Filter =「(&(samaccountname = $ -user())「 $ results = $ searcher.findone() – rpr 2015-03-16 01:35:37

相關問題