Powershellを使用したMicrosoft Exchange Server 2016のテールのクリア

画像



500人を超える従業員が企業のメールを使用している会社でMicrosoft Exchange Server 2016を6か月間使用していたときに、 Active Directoryで無効になっているユーザーに関する情報を完全に削除する問題に遭遇しました。



ADでユーザーアカウンティングを無効にした後に自動化するタスク:





手作業が完全に嫌いだと感じたため、 PowerShellを使用してこれらすべてのタスクを自動化することにしました。



準備:



Exchange Management PowerShellライブラリを接続します。



Add-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn;
      
      





Active Directoryで切断されたすべてのユーザーのリストを取得し、一部のサービスレコードを除外します。



 $DisableUsers = get-user -Filter {(UserAccountControl -eq 'AccountDisabled, NormalAccount') -and (RecipientType -eq 'UserMailbox')} | ? {($_.SamAccountName -ne 'krbtgt') -and ($_.SamAccountName -ne 'SM_2013a5b0c2bd4ca2a') -and ($_.SamAccountName -ne 'testvc')}
      
      





変数を宣言します:



 #        . $BatchName = 'MassRequest' #     $CMounth = (Get-Date).month $CYear = (Get-Date).year $CurrentDate = "$CYear.$CMounth" #      . $MainDir = "\\% %" $ExportPath = $MainDir + $CurrentDate + "\"
      
      





処理中:



解雇されたユーザーの.pstアーカイブを見つけやすくするために、Year.Monthビューのフォルダーを作成することにしました。 したがって、2017年4月にレイオフされたすべてのユーザーは2017.4フォルダーに分類され、5月に2017.5フォルダーにレイオフされます。



 # ,     .,  ,  . if ((Test-Path $ExportPath -PathType Container) -eq $false){ New-Item -Path $MainDir -Name $CurrentDate -ItemType "directory" }
      
      





無効なユーザーのサイクルでは、メインおよびアーカイブメールボックスから.pstファイルのメールをアンロードし、Year.Monthフォルダーに保存します。



-BatchNameパラメーターを使用して、1つの名前でリクエスト組み合わせて、各リクエストを個別にではなく、アップロード全体のステータスを一度に追跡できるようにします。



 foreach($User in $DisableUsers){ $PrimaryPath = $ExportPath + $User.SamAccountName + ".pst" $ArhivePath = $ExportPath + $User.SamAccountName + "_Archive.pst" New-MailboxExportRequest -Mailbox $User.SamAccountName -BatchName $BatchName -FilePath $PrimaryPath New-MailboxExportRequest -Mailbox $User.SamAccountName -BatchName $BatchName -FilePath $ArhivePath -IsArchive }
      
      





スクリプトが機能するのを待っています。 待つ必要があります さらに、メールボックスを無効ステータスに転送し、この前にメールのアンロードが終了したことを確認したいと思います。



 # ,     $i=1; while ((Get-MailboxExportRequest -BatchName $BatchName | Where {($_.Status -eq “Queued”) -or ($_.Status -eq “InProgress”)})) { sleep 60 Write-Host "  $i .  .." $i=$i+1 }
      
      





エクスポートが完了したら、ステータスが完了になったすべてのリクエストを削除します



 #       Get-MailboxExportRequest -Status Completed | Remove-MailboxExportRequest -Confirm:$false
      
      





最初の部分が完了したら、メーリングリストのクリーニングを開始します。 まず、すべてのリストの配列を取得します。



 #    .     . $DistribList = Get-DistributionGroup
      
      





サイクルで、すべてのメーリングリストを調べて、切断されたユーザーを削除します。



 #         foreach($List in $DistribList){ foreach($User in $DisableUsers){ Remove-DistributionGroupMember -Identity $List -Member $User -Confirm:$false -ErrorAction Ignore } }
      
      





最後から2番目の段階:メールボックスを無効にします。 ADのユーザーのアカウントから電子メールが消え、メールボックス自体が削除されます。 現在では、標準のExchangeツールを使用してしばらくの間のみ復元できます。



 #    ,        foreach($User in $DisableUsers){ Disable-Mailbox -Identity $User.SamAccountName -Archive -Confirm:$false Disable-Mailbox -Identity $User.SamAccountName -Confirm:$false }
      
      





ユーザーができるだけ早く変更を確認できるように、GALとOABを更新します。



 #  Global Adress List,        Get-GlobalAddressList | Update-GlobalAddressList Get-OfflineAddressBook | Update-OfflineAddressBook Get-AddressList | Update-AddressList
      
      





小さなコメント:



当社では、この処理を1Cのカスタムボタンに添付しました。 従業員のプロファイルの人事部門は、彼にステータス「解雇」を設定し、スクリプトが機能し始めます。



したがって、アドレス帳で切断されたユーザーを確認することはほとんど不可能であり、解雇された従業員はすぐにメールにアクセスできなくなります。 ( Active Directoryでアカウンティングをオフにするだけの場合、従業員は依然としてメールにアクセスできますが、これは当社のポリシーでは受け入れられません)。



誰かがこのスクリプトを役に立つと思うことを願っています。 よろしくお願いします!



All Articles