Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用powershell启用AD帐户_Powershell_Active Directory - Fatal编程技术网

使用powershell启用AD帐户

使用powershell启用AD帐户,powershell,active-directory,Powershell,Active Directory,在Active Directory中创建的所有新用户帐户将保持为禁用状态,并勾选“用户下次登录时必须更改密码”选项。此帐户将保持禁用状态7天,第8天需要启用。。创建帐户已经由另一个脚本完成,我一直在使用帐户启用部分 如何使用PowerShell脚本存档启用这些帐户?如何使用所有帐户属性,如lastlogon日期、帐户创建日期、帐户状态(已禁用)和选项“用户下次登录时必须更改密码”,以验证并发现用户是需要启用的新用户 get-aduser -f {-not ( lastlogontimestamp

在Active Directory中创建的所有新用户帐户将保持为禁用状态,并勾选“用户下次登录时必须更改密码”选项。此帐户将保持禁用状态7天,第8天需要启用。。创建帐户已经由另一个脚本完成,我一直在使用帐户启用部分

如何使用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

以下是您可以执行此操作的方法,但您需要编写脚本:

检查
whenCreated
属性,它有一个日期时间戳,您可以使用它来查看帐户的使用年限


如果帐户超过7天并且帐户被禁用,请将
userAccountControl
属性设置为enabled IE
512
,然后将用户必须更改密码属性设置为true

使用筛选器根据您的条件进行筛选。此代码段获取禁用帐户的用户对象,然后过滤掉那些不到一周的帐户。它将它们存储在用户对象的集合中。您可以使用
$variable |$variable其中{[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 |启用帐户

您尝试了什么?堆栈溢出不是代码编写服务;您应该已经尝试了自己的解决方案,需要帮助修复。下面给出了我尝试的命令,但无法检查用户是否已超过7天的禁用期。。获取aduser-f{-not(lastlogontimestamp-like“*”)-和(enabled-eq$false)-和(pwdLastSet-eq 0)}|选择对象名称,SamAccountName |导出csv-path data.csvOK,这样您就展示了如何处理数据,但是你做了什么,试图用你所描述的方式来使用它呢?如果你只是领导OP,那么这将作为一个更好的评论。有人能帮我详细说明一下吗。。正如我前面提到的,我对这一点完全陌生($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()
Get ADUser-Filter{(enabled-eq$false)和(pwdLastSet-eq 0)-and-not(lastlogontimestamp-like“*”)}-Properties whencreated | Where Object{$\ whencreated-gt(get date).adddays(-7)}|选择name,SamAccountName,当创建时| export csv-path data.csv-NoTypeInformation
上述命令可以很好地收集用户信息..但是如果我需要通过LDAP进行通信,我需要如何更改此代码..?我对此完全陌生..:(我对LDAP没有经验。我知道在使用Get ADUser时可以使用-LDAPFilter而不是-Filter。您是说需要在其他域上运行此操作吗?您在另一条评论中使用的方法,即构建LDAP搜索器,是针对Powershell v1或v2完成的,无需访问ActiveDirectory Powershell模块。一般来说,拉取用户列表后,您需要对它做什么?