M365の配布グループの表示名をPowerShellで一括変更(更新編)
Microsoft365(M365)の配布グループに関して、表示名一括変更の更新編です。準備編は下記をご確認ください。
準備編で生成されたExcelファイルに変更する表示名を入力します。
その後、以下のPowerShellを実行してください。
PowerShell
※ 必要なモジュールは適宜インストールしてください。
# スクリプトファイルがある場所のパスを取得
$CurrentFolder = Split-Path $MyInvocation.MyCommand.Path -Parent
# Excelを操作する為の宣言
$excel = New-Object -ComObject Excel.Application
# 起動したExcelを表示しない
$excel.Visible = $false
# Excelファイルのフルパスを取得
$excelFile = (Get-ChildItem $CurrentFolder"\配布G名変更_*.xlsx").FullName
# もしExcelファイルが存在していたら開く。なければ終了。
if (-not ([string]::IsNullOrEmpty($excelFile))){
$book = $excel.Workbooks.Open($excelFile, 0, $true)
}else{
Write-Host "エクセルファイルが存在しないため実行できません。"`r`n
exit
}
# エクセルファイルのデータを取得
$sheet = $book.Worksheets.Item("Sheet1")
# 最終行の行数取得
$lastrow = $sheet.Range("A2").End([Microsoft.Office.Interop.Excel.XlDirection]::xlDown.value__).Row
# 認証情報を入力
$Credential = Get-Credential
# ExchangeOnlineに接続
Connect-ExchangeOnline -Credential $credential
# ログを格納する配列を作成
$Log_array = @()
for ($i = 3; $i -lt $lastrow+1 ; $i++) {
# 変更する配布グループを取得
if(-not($sheet.Cells.Item($i, 2).Text -eq "")){
$BeforeDisplayname = $sheet.Cells.Item($i, 1).Text
$AfterDisplayname = $sheet.Cells.Item($i, 2).Text
$BeforeName = $sheet.Cells.Item($i, 5).Text
if($BeforeName -match "[0-9]{14}$"){
$BeforeNameNumber = [regex]::Matches($BeforeName, "[0-9]{14}$")
$AfterName = $AfterDisplayname + $BeforeNameNumber
}else{
$AfterName = $AfterDisplayname
}
Set-DistributionGroup -Identity $BeforeDisplayname -DisplayName $AfterDisplayname -Name $AfterName
$Log = [string]($i)+" " + $BeforeDisplayname +" を " +$AfterDisplayname +" に変更しました。"
$Log_array += $Log
}
}
# ログ(配列)をCSV出力
if ($Log_array.count -gt 0 ){
$Log_array | Out-File -FilePath $CurrentFolder\配布G名変更_Log_$(Get-Date -Format "yyyyMMdd_HHmmss").txt
}
# Excelを閉じる
$excel.Quit()
# プロセスを解放する
$excel = $null
[GC]::Collect()
# 接続を切断
Disconnect-ExchangeOnline -Confirm:$false
※ 本コードを利用する場合は必ず以下の免責事項をご確認ください。