2015-03-13 78 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

相关问题