По сути, данный скрипт может использоваться в разных сценариях работы. В моем примере, этот скрипт при членстве в определенной группе(Exchange_owapolicy_DenySetOwa) в AD устанавливает политику owa(DenySetPhoto). В случае удаления учетной записи из группы, политика убирается. Все изменения высылаются на почту администратору.
Уведомление:
Сам скрипт:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# $proxyOptions = New-PSSessionOption -ProxyAccessType NoProxyServer Import-PSSession (New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://win13/powershell/ -Authentication Kerberos -SessionOption $proxyOptions) Import-Module ActiveDirectory # $rpath = "C:\tasks\mailbox_owapolicy\report_owapolicy.html" $rbody = "<!DOCTYPE HTML><html><head><meta charset=utf-8></head><body><table border=1><tr><th>Name</th><th>SamAccountName</th><th>status</th></tr>" | out-file $rpath -Append # $user = Get-ADGroupMember Exchange_OwaPolicy_DenySetPhoto $user |%{ if(Get-CASMailbox -Identity $_.samAccountname |%{$_.OwaMailboxPolicy -notmatch "DenySetPhoto"}) { Set-CASMailbox -Identity $_.SamAccountName -OwaMailboxPolicy "DenySetPhoto" #-WhatIf Write-Output "<tr><td>" $_.name "</td>"|Out-File $rpath -Append Write-Output "<td>" $_.SamAccountName "</td>"|Out-File $rpath -Append Write-Output "<td><font color="Green">" set DenySetPhoto "</td></tr></font>"|Out-File $rpath -Append $sendmail = $true } } # Get-CASMailbox -ResultSize Unlimited |%{ if($_.OwaMailboxPolicy -match "DenySetPhoto"){ if((Get-ADPrincipalGroupMembership $_.SamAccountName).name -contains "Exchange_OwaPolicy_DenySetPhoto" -eq $false ) { Set-CASMailbox -Identity $_.SamAccountName -OwaMailboxPolicy $null #-WhatIf Write-Output "<tr><td>" $_.name "</td>"|Out-File $rpath -Append Write-Output "<td>" $_.SamAccountName "</td>"|Out-File $rpath -Append Write-Output "<td><font color="Red">"remove DenySetPhoto "</td></tr></font>"|Out-File $rpath -Append $sendmail = $true } }} if($sendmail -eq $true) { $rbody = $rbody + "</table></body></html>" | out-file $rpath -Append $bodys = Get-Content -Path $rpath | Out-String $encoding = [System.Text.Encoding]::UTF8 Send-MailMessage -From OwaPolicy@win13.ru -To owapolicystatus@win13.ru -Subject 'UpdateUsers_OWA_Policy' -Body $bodys -BodyAsHtml -SmtpServer 'smtp.win13.ru' -Encoding $encoding } del $rpath |