前言

突然想到了写这个而已,虽然我ps不熟,但日常还是会遇到一些需求,使用ps可以省很多事,此文持续更新,来记录我日常操作AD的一些Ps命令

 

正文

所有AD操作记得加载AD模块-Import-Module ActiveDirectory

1. 使用ps导出指定组的成员信息

Get-ADGroup -Filter {name -eq “groupname”} | Get-ADGroupMember | Get-ADUser -Properties * -ErrorAction SilentlyContinue | select Name,SamAccountName,Canonicalname,Company,mail | Export-Csv filename -NoTypeInformation -Encoding UTF8

wKiom1Y8CKWxjVo4AAFQXuAwSZM380.jpg

说明:

a. 会导出到当前目录,也可以在Export-Csv后跟 -Path指定路径。

b. 可以对结果进行Sort-Object排序

2. 查询指定OU的位置信息(OU太多,人员异动的时候老是记不住目标位置)

Get-ADOrganizationalUnit -Filter {name -eq "OUname"}

wKiom1Y8DPHjiRRDAAGz10JNuUc140.jpg

3. 清除/添加 OU/User/计算机对象的防意外删除(场景为想处理一些对象的时候没权限,需要去掉这个属性)

Set-ADObject -ProtectedFromAccidentalDeletion $false/true

wKiom1Y8DlqCb8aaAAKmf5EvB2I086.jpg

4. 设置所有用户(指定OU的所有用户/csv列表用户)密码永不过期(或取消永不过期)

Set-ADUser -PasswordNeverExpires $false/false

wKiom1Y8DziByO5fAAFuOG2-avY356.jpg

5. 查询所有超过90天未登录的用户(新环境,无数据,后面用-gt来查询90天内登录过用户,可以使用 | select来选择自己需要的数据,LastlogonTimeStamp时间最大可能有14天的偏差)

$lastlogon = (Get-Date).addDays(-90).ToFileTime()

Get-ADUser -Filter {lastlogontimestamp -lt $lastlogon} -SearchBase "OU=test01,DC=dztest,dc=com"

wKioL1Y8EcOgmE79AALSKYV1k1Y321.jpg

6. 查询所有超过90天未登录的计算机对象(新环境,无数据,方式与查看用户相同,只是时间表达方式不一样,后面用-gt来查询90天内登录过的计算机对象)

wKioL1Y8EtTTM_x_AAI9SleZq9Y170.jpg

 

总结

先更新到这里了,这些都是我日常使用的,主要是用来做批量的处理,而且这些参数可以更加精确,后续有时间再详细讨论了