Exchange Onlineの管理には、メールボックスの設定や配布グループの管理、監査など、さまざまなタスクがあります。特にユーザー数が多い場合や、大規模な組織での管理業務は手間がかかりますが、PowerShellスクリプトを活用すれば業務の効率化が可能です。
この記事では、Exchange Online管理者に役立つPowerShellスクリプトを5つ紹介します。日々の管理作業にぜひお役立てください。
メールボックスのサイズを一括で確認
メールボックスの使用容量は、容量制限に達する前に確認しておくことが重要です。このスクリプトでは、すべてのユーザーのメールボックスサイズを一括で取得し、容量不足に対する対応を迅速に行えます。
# すべてのメールボックスのサイズを取得
$mailboxes = Get-Mailbox -ResultSize Unlimited
foreach ($mailbox in $mailboxes) {
$size = Get-MailboxStatistics -Identity $mailbox.Alias
Write-Host "$($mailbox.DisplayName): $($size.TotalItemSize)"
}
ポイント
- メールボックス容量が大きいユーザーを特定し、対応を検討できます。
TotalItemSize
でユーザーのメールボックス使用容量を取得しています。
非アクティブなメールボックスの特定
Exchange Onlineで非アクティブなメールボックスが多いと、容量を無駄に消費してしまうことがあります。このスクリプトで、一定期間メールにアクセスしていない非アクティブなメールボックスを確認できます。
# 180日以上メールにアクセスしていないメールボックスを特定
$inactiveMailboxes = Get-Mailbox -ResultSize Unlimited | Where-Object {
(Get-MailboxStatistics -Identity $_.Alias).LastLogonTime -lt (Get-Date).AddDays(-180)
}
# 非アクティブなメールボックスを表示
$inactiveMailboxes | Select-Object DisplayName,PrimarySmtpAddress,LastLogonTime
ポイント
- メールボックスの最終ログイン日時をもとに、180日以上アクセスしていないユーザーを抽出しています。
- 非アクティブなメールボックスの整理が可能です。
受信ルールの一括適用
Exchange Onlineでは、スパムメールの処理や特定の送信者からのメールの管理に受信ルールが便利です。このスクリプトでは、特定の受信ルールをすべてのユーザーに適用します。
# 受信ルールを一括で追加
$mailboxes = Get-Mailbox -ResultSize Unlimited
foreach ($mailbox in $mailboxes) {
New-InboxRule -Mailbox $mailbox.Alias -Name "BlockSpam" -From "spam@domain.com" -DeleteMessage
}
ポイント
- すべてのユーザーの受信トレイに「spam@domain.com」からのメールを自動削除するルールを適用しています。
- 不要なメールを自動でフィルタリングできるため、ユーザーの受信トレイが整理されます。
メールボックス監査の有効化
監査ログは、セキュリティインシデントの発見や内部調査の際に役立ちます。このスクリプトでは、メールボックス監査を一括で有効化し、特定の操作が記録されるよう設定します。
# 監査を有効化するメールボックスの取得
$mailboxes = Get-Mailbox -ResultSize Unlimited | Where-Object {$_.AuditEnabled -eq $false}
# 各メールボックスで監査を有効化
foreach ($mailbox in $mailboxes) {
Set-Mailbox -Identity $mailbox.Alias -AuditEnabled $true -AuditOwner MailboxLogin,SendAs -AuditDelegate SendOnBehalf,SendAs,MoveToDeletedItems
}
ポイント
- メールボックス監査を有効化することで、特定のアクション(メールの送信や削除など)が記録されます。
- セキュリティ監査の精度が上がり、万が一の際の原因特定がスムーズになります。
配布グループメンバーの一括確認
配布グループのメンバーは、定期的に見直しが必要です。このスクリプトを使用すると、すべての配布グループとそのメンバーの一覧を簡単に確認できます。
# 配布グループの取得
$groups = Get-DistributionGroup -ResultSize Unlimited
# 各グループのメンバー一覧を表示
foreach ($group in $groups) {
Write-Host "グループ: $($group.DisplayName)"
Get-DistributionGroupMember -Identity $group.Alias | ForEach-Object {
Write-Host " - $($_.DisplayName)"
}
}
ポイント
- 配布グループのメンバーを一括で確認でき、グループの適切な運用が可能になります。
- 必要に応じて、不要なメンバーの削除や新規メンバーの追加が行いやすくなります。
まとめ
Exchange Onlineの管理は、多くの設定や監視を要するため、管理者にとって手間がかかることが多いです。しかし、PowerShellスクリプトを活用することで、業務の効率化が図れ、セキュリティやメールボックス容量の管理がよりスムーズに行えます。今回紹介したスクリプトをぜひ日常の業務に取り入れて、より効果的な管理を目指しましょう。
今後もExchange Online管理者に役立つ情報を発信していきますので、引き続き当ブログをお楽しみに!
コメント