Powershell管理系列(三十九)PowerShell查询和解锁AD账号

-----提供AD\Exchange\Lync\Sharepoint\CRM\SC\O365等微软产品实施及外包,QQ:185426445.电话18666943750

需求:根据要求对集团AD域及下属3个子域的所有AD账号进行统计,查询所有锁定的账号,解锁,并每天早上发送邮件到指向邮箱。

Import-Module activedirectory
$yuntcloud_Lockeduser = Search-ADAccount -LockedOut -SearchBase "dc=yuntcloud,dc=com" -server dc01 | select name, samaccountname
$aaa_Lockeduser = Search-ADAccount -LockedOut -SearchBase "dc=aaa,dc=yuntcloud,dc=com" -server aaaDC1 | select name, samaccountname
$bbb_Lockeduser = Search-ADAccount -LockedOut -SearchBase "dc=bbb,dc=yuntcloud,dc=com" -server bbbdc1 | select name, samaccountname
$ccc_Lockeduser = Search-ADAccount -LockedOut -SearchBase "dc=ccc,dc=yuntcloud,dc=com" -server cccDC1 | select name, samaccountname
#send email
$UserName = "[email protected]" #定义管理员账户名称
$Password = ConvertTo-SecureString "Djds123" -AsPlainText –Force
$cred = New-Object System.Management.Automation.PSCredential($UserName, $Password)
$nFrom = "[email protected]"
$nTo = "[email protected]"
$lockeduser = @()
#Unlock yuntcloud Locked user
if ([string]::IsNullOrEmpty($yuntcloud_Lockeduser.name))
{
 Write-Host "yuntcloud no locked user"
 Start-Sleep 5
 Send-MailMessage -From $nFrom -To $nTo -Subject "yuntcloud no locked user" -Body "yuntcloud no locked user" -Credential $cred -SmtpServer "mail.yuntcloud.com" -Encoding ([System.Text.Encoding]::UTF8)
}
else
{
 Write-Host "yuntcloud Locked user"
 foreach ($i in $yuntcloud_Lockeduser)
 {
  Write-Host $i.name
  $lockeduser += $i
 }
 Start-Sleep 5
 Search-ADAccount -LockedOut -SearchBase "dc=yuntcloud,dc=com" -server dc01 | Unlock-ADAccount
 Write-Host "yuntcloud all locked account were unlocked"
 $lockeduser | Export-Csv -Path c:\yuntcloud_lockeduser.csv -NoTypeInformation -Encoding utf8
 Send-MailMessage -From $nfrom -To $nto -Subject "yuntcloud locked user" -Body "yuntcloud locked user" -Attachments "c:\yuntcloud_lockeduser.csv" -Credential $cred -SmtpServer mail.yuntcloud.com -Encoding ([System.Text.Encoding]::UTF8)
 Start-Sleep 3
}
#Unlock aaa.yuntcloud.com Locked user
$lockeduser = @()
if ([string]::IsNullOrEmpty($aaa_Lockeduser.name))
{
 Write-Host "aaa no locked user"
 Start-Sleep 5
 Send-MailMessage -From $nfrom -To $nto -Subject "aaa no locked user" -Body "aaa no locked user" -Credential $cred -SmtpServer mail.yuntcloud.com -Encoding ([System.Text.Encoding]::UTF8)
}
else
{
 Write-Host "aaa Locked user"
 foreach ($i in $aaa_Lockeduser)
 {
  Write-Host $i.name
  $lockeduser += $i
 }
 Start-Sleep 5
 Search-ADAccount -LockedOut -SearchBase "dc=aaa,dc=yuntcloud,dc=com" -server aaaDC1 | Unlock-ADAccount
 Write-Host "aaa all locked account were unlocked"
 $lockeduser | Export-Csv -Path c:\aaa_lockeduser.csv -NoTypeInformation -Encoding utf8
 Send-MailMessage -From $nfrom -To $nto -Subject "aaa locked user" -Body "aaa locked user" -Attachments "c:\aaa_lockeduser.csv" -Credential $cred -SmtpServer mail.yuntcloud.com -Encoding ([System.Text.Encoding]::UTF8)
 Start-Sleep 3
}
#Unlock bbb.yuntcloud.com Locked user
$lockeduser = @()
if ([string]::IsNullOrEmpty($bbb_Lockeduser.name))
{
 Write-Host "bbb no locked user"
 Start-Sleep 5
 Send-MailMessage -From $nfrom -To $nto -Subject "bbb no locked user" -Body "bbb no locked user" -Credential $cred -SmtpServer mail.yuntcloud.com -Encoding ([System.Text.Encoding]::UTF8)
}
else
{
 Write-Host "bbb Locked user"
 foreach ($i in $bbb_Lockeduser)
 {
  Write-Host $i.name
  $lockeduser += $i
 }
 Start-Sleep 5
 Search-ADAccount -LockedOut -SearchBase "dc=bbb,dc=yuntcloud,dc=com" -server bbbdc1 | Unlock-ADAccount
 Write-Host "bbb all locked account were unlocked"
 $lockeduser | Export-Csv -Path c:\bbb_lockeduser.csv -NoTypeInformation -Encoding utf8
 Send-MailMessage -From $nfrom -To $nto -Subject "bbb locked user" -Body "bbb locked user" -Attachments "c:\bbb_lockeduser.csv" -Credential $cred -SmtpServer mail.yuntcloud.com -Encoding ([System.Text.Encoding]::UTF8)
 Start-Sleep 3
}
#Unlock ccc.yuntcloud.com Locked user
$lockeduser = @()
if ([string]::IsNullOrEmpty($ccc_Lockeduser.name))
{
 Write-Host "ccc no locked user"
 Start-Sleep 5
 Send-MailMessage -From $nfrom -To $nto -Subject "ccc no locked user" -Body "ccc no locked user" -Credential $cred -SmtpServer mail.yuntcloud.com -Encoding ([System.Text.Encoding]::UTF8)
}
else
{
 Write-Host "ccc Locked user"
 foreach ($i in $ccc_Lockeduser)
 {
  Write-Host $i.name
  $lockeduser += $i
 }
 Start-Sleep 5
 Search-ADAccount -LockedOut -SearchBase "dc=ccc,dc=yuntcloud,dc=com" -server cccDC1 | Unlock-ADAccount
 Write-Host "ccc all locked account were unlocked"
 $lockeduser | Export-Csv -Path c:\ccc_lockeduser.csv -NoTypeInformation -Encoding utf8
 Send-MailMessage -From $nfrom -To $nto -Subject "ccc locked user" -Body "ccc locked user" -Attachments "c:\ccc_lockeduser.csv" -Credential $cred -SmtpServer mail.yuntcloud.com -Encoding ([System.Text.Encoding]::UTF8)
 Start-Sleep 3
}
时间: 2024-08-02 10:55:41

Powershell管理系列(三十九)PowerShell查询和解锁AD账号的相关文章

Powershell管理系列(十五)查询最近一个月未登录的AD账号和Exchange账号

-----提供AD\Exchange\Lync\Sharepoint\CRM\SC\O365等微软产品实施及外包,QQ:185426445.电话18666943750 今天听到群里有朋友问,想查询最近1个月未登录的AD账号,我们可以通过如下的Powershell来实现: 需求1.查询OU中所有账号的创建时间\SID\上次修改密码时间\最后一次登录时间 PowerShell查询指定OU中所有账号的创建时间\SID\上次修改密码时间\最后一次登录时间,可以通过如下命令完成:PS C:\Users\a

Powershell管理系列(十九)PowerShell操作之修改Exchange数据库报警时间

-----提供AD\Exchange\Lync\Sharepoint\CRM\SC\O365等微软产品实施及外包,QQ:185426445.电话18666943750 需求:Exchange用户满的提示是默认的发送系统提示邮件时凌晨1点,想改到早上8点. 步骤1.我们首先找到数据库,属性点开,默认的警告邮件间隔是每日1:00运行 步骤2.逐个修改数据库属性,我们修改成早上8点,注意时间间隔要15分钟以上. technet参考截图: 设置如下: 步骤3.查询下是否生效. 步骤4.数据库比较多的时候

Powershell管理系列(四十)PowerShell查询和解锁AD账号(改进后,只发一次邮件)

-----提供AD\Exchange\Lync\Sharepoint\CRM\SC\O365等微软产品实施及外包,QQ:185426445.电话18666943750 需求:根据要求对集团AD域及下属3个子域的所有AD账号进行统计,查询所有锁定的账号,解锁,并每天早上发送邮件到指向邮箱.(之前三十九的基础上略作调整,只发一封邮件即可) Remove-Item C:\get_locked_user\ -Recurse -Force if(!(test-path C:\get_locked_user

Powershell管理系列(十二)Exchange新启用的邮箱禁用OWA及Activesync的访问

-----提供AD\Exchange\Lync\Sharepoint\CRM\SC\O365等微软产品实施及外包,QQ:185426445.电话18666943750 今天在一个群里听到这样一个需求,新建一批AD账户后,对这些AD账户启用邮箱,同时要对这些邮箱设置规则,禁止访问OWA和Activesync的权限. 步骤1.批量建立AD账号参考博客Powershell管理系列(一)Active Direcrtory管理:用户管理,http://yuntcloud.blog.51cto.com/11

Powershell管理系列(十七)PowerShell操作之定时删除过时文件

-----提供AD\Exchange\Lync\Sharepoint\CRM\SC\O365等微软产品实施及外包,QQ:185426445.电话18666943750 开篇前,先说点新年感悟,2010开博5年来,前面两年没怎么动手写博客,真正开始写博客的时间是2013年,那时候Exchange server 2013刚出来不久,全新的软件,全新的界面,全新的体验,当然也带来全新的挑战,那就是我们这些追随微软脚步的工程师又得一次跟上巨人的脚步了,从Exchange server 2003,到后面的

Powershell管理系列(十六)在PowerShell中添加Exchange管理单元

-----提供AD\Exchange\Lync\Sharepoint\CRM\SC\O365等微软产品实施及外包,QQ:185426445.电话18666943750 每次都找那个Exchange命令行管理程序太麻烦了,其实我们可以更简单,可以直接在PowerShell控制台内直接调用Exchange的管理命令就好了. 以下是Powershell调用各个版本的Exchange. Exchange 2007 Add-PSSnapin Microsoft.Exchange.Management.Po

Powershell管理系列(十)邮件联系人及邮件用户的管理

鉴于有些用户不太熟悉邮件联系人.邮件用户的区别,博文首先介绍下用户邮箱.邮件联系人.邮件用户的概念,以下介绍部分博文摘自winos微软中文技术论坛. ----------------------------------------------------------------------------------------------------- a)        用户邮箱:最最常见的应该就是这种.我们给一个域账号启用了邮箱,那么这个用户邮箱就是一个典型的收件人.用户邮箱通常包含邮件.日历

BizTalk 开发系列(三十九) BizTalk Server 2009技术概览

BizTalk Server 2009已经发布一段时间了,之前Beta版发布的时候也写过一篇文章<BizTalk Server 2009 Beta初体验>, 当时比较了2006 R2与2009 Beta这两个版本之间的常见功能的开发.发现表现平平,没有什么太让人兴奋的地方.随着最近一段时间BizTalk Server 2009配套产品(组件)的陆续发布.对于新一代的BizTalk开发应用平台的认可逐渐清晰起来. BizTalk新一代的开发与应用平台除了操作系统.数据库及集成开发环境之外主要包括

Powershell管理系列(二十六)PowerShell操作之批量导出&导入邮箱

-----提供AD\Exchange\Lync\Sharepoint\CRM\SC\O365等微软产品实施及外包,QQ:185426445.电话18666943750 项目中有时候做跨林邮箱迁移的时候,条件不成熟,比如安全考虑或者其他考虑,不能做双林信任,这样就提出了一个问题,历史邮件需要使用的话怎么办,一个简单高效的解决办法就是从源森林批量导出邮件为.pst文件,在批量导入到目的域森林,具体操作如下: 1.赋予管理账号邮件导入导出权限,命令如下: cls whoami New-Manageme