Отключение учетных записей пользователей с просроченными паролями (пароль не менялся более 100 дней).
<# .SYNOPSIS Отключение учетных записей пользователей с просроченными паролями .DESCRIPTION Отключение учетных записей пользователей с просроченными паролями (пароль не менялся более 100 дней). #> #╔════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗# $Host.UI.RawUI.WindowTitle = "Отключение учетных записей пользователей с просроченными паролями" #╚════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝# [system.gc]::Collect() #------ Logging section ------# $fileLocation = (gi $MyInvocation.InvocationName) | ForEach-Object { $fileDirectory = "$($_.DirectoryName)\$($_.BaseName)"; "$fileDirectory\$($_.BaseName)_$('{0:yyyy-MM-dd}'-f(date))"; if (!(Test-Path "$fileDirectory")) { ni "$fileDirectory" -ItemType "directory" | Out-Null } } $Domain = "adminbd.ru.ru" $Sender = "helpdesk@adminbd.ru.ru" $smtpserver = "mail.adminbd.ru.ru" #------ Variables ------# Import-Module ActiveDirectory $tAD = 'pwdLastSet','Name','whenCreated','PasswordNeverExpires','PasswordExpired','SamAccountName','mail','lastLogonTimestamp','DistinguishedName','Description','CanonicalName','extensionAttribute15' $tAD2 = 'whenCreated','Name','SamAccountName','mail',@{n='pwdLastSet';e={[DateTime]::FromFileTime($_.pwdLastSet)}},'PasswordNeverExpires','PasswordExpired',@{n='lastLogonTimestamp';e={[DateTime]::FromFileTime($_.lastLogonTimestamp)}},'DistinguishedName','Description','CanonicalName','extensionAttribute15' $OrgUnit = "OU=Locations,DC=adminbd.ru,DC=ru" $ExceptinOU = "*External*" $td1 = (Get-Date).adddays(-100) $td2 = (Get-Date).adddays(-30) $td1=$td1.ToFileTime() $DC = "SHR-AD01.adminbd.ru.ru" $Result = @() #$addlog = "C:\tmp\result_blok_users_23_06_22.csv" #------ Execution ------# $UserAD = Get-ADUser -SearchBase $OrgUnit -Filter {pwdLastSet -le $td1 -and Enabled -eq "True" -and whenCreated -le $td2 -and PasswordNeverExpires -eq "False"} -Properties $tAD | Select-Object $tAD2 | Where-Object { !($(foreach ($u in $ExceptinOU) {$_.CanonicalName -like $u}) -contains ($True)) } #Export-Csv -Path C:\tmp\Useradminbd.ru.csv -Encoding UTF8 foreach ($item in $UserAD) { $data = @{"login"=$item.UserPrincipalName} $headers = @{"accept" = '*/*'} $StatusUrl = (Invoke-WebRequest -Method 'Post' -Uri 'https://adeventhandler.adminbd.ru.ru/User/Deactivation' -Headers $headers -Body ($data | ConvertTo-Json) -ContentType "application/json") ForEach-Object { $detailed = [ordered]@{ Login = $item.sAMAccountName whenCreated = $item.whenCreated pwdLastSet = $item.pwdLastSet lastLogonTimestamp = $item.lastLogonTimestamp extensionAttribute15 = 'Пароль не менялся более 95 дней' StatusUrlCode = $StatusUrl.StatusCode } Set-aduser -Server $DC -Identity $item.sAMAccountName -Replace @{extensionAttribute15 = 'Пароль не менялся более 95 дней'} Disable-ADAccount -Server $DC $item.sAMAccountName $Result += New-Object PSObject -Property $detailed } $Result | Export-CSV -Path $fileLocation -NoTypeInformation -Force -Encoding "UTF8" -Delimiter ";" } #------ Send Mail ------# $Subject = 'Отключение учетных записей пользователей с просроченными паролями' $EmailBody = ' <html> <body> <p class="MsoNormal">Отключение учетных записей пользователей с просроченными паролями.</i></b></p> <p>С уважением, Техническая поддержка.</p> <p>Телефон: </p> <p>Центр коммуникаций adminbd.ru</p> </html>' Send-MailMessage -To 'sb.monitoring@adminbd.ru.ru' -From $Sender -SmtpServer $smtpserver -Subject $Subject -Body $EmailBody -port 587 -Attachments $fileLocation -BodyAsHtml -Encoding utf8 Get-ChildItem $fileDirectory -Recurse | where {$_.LastWriteTime -lt (Get-Date).AddDays(-15)} | Remove-Item -force
Similar Posts:
- Как Убрать переключатель PasswordNeverExpired
- Как сделать скрипт для Удаление не активных ПК более 60 дней
- Как сделать автоматическую смену пароля у пользователя exchange и отправка нового пароля на email.
- Как создать переадресацию с одного ящика на другой в exchange. Переезд в другой домен.
- Как создать контакты в exchange из другого домена.