社畜の所業

社畜の所業

Microsoft365の機能について解説をしていきたいと思います。このブログの情報をご活用いただければ幸いです。たまに他の情報も取り入れていきたいと思います。

※このサイトはPR記事を含みます。

【Microsoft365参考書】複数の配布リストをCSVで一括作成する方法【メンバー・所有者も一括登録】

複数の配布リストをCSVで一括作成する方法【メンバー・所有者も一括登録】

この記事でわかること

  • 複数の配布グループをCSVファイルから一括で作成する方法
  • 配布グループのメンバー・所有者を一括で追加する方法
  • 数値ではなく文字列でメンバー参加・脱退の制限を指定する方法

メーリングリストとして利用できる配布グループ(配布リスト)を複数作成する場合、Exchange管理センターで1件ずつ作成すると手間がかかります。

CSVファイルに情報をまとめて入力し、PowerShellでインポートすることで、複数の配布グループをまとめて作成・設定できます。

※あらかじめ Exchange Online PowerShell に接続してから実行してください。

it-bibouroku.hateblo.jp

 

 

 

配布グループを一括で作成する手順

1. 作成する配布グループのCSVファイルを作成する

<CSV ファイル書式>

Name,DisplayName,Alias,PrimarySmtpAddress,Managedby,Members,RequireSenderAuthenticationEnabled,MemberDepartRestriction,MemberJoinRestriction
DL01,DL01,DL01,DL01@contoso.com,admin01@contoso.com,user01@contoso.com,1,0,0
DL02,DL02,DL02,DL02@contoso.com,admin01@contoso.com;admin02@contoso.com;user02@contoso.com,1,0,0
DL03,DL03,DL03,DL03@contoso.com,admin03@contoso.com,user01@contoso.com;user03@contoso.com,1,0,0
パラメータ 内容
Name 配布グループの名前(内部的に使用される名称のため、他のオブジェクトと重複不可)
DisplayName 配布グループの表示名
Alias 配布グループのエイリアス名(メールアドレスの@より前)
PrimarySmtpAddress 配布グループのメールアドレス
Managedby 所有者のメールアドレス。複数指定する場合は[;]で区切る
Members グループメンバーのメールアドレス。複数指定する場合は[;]で区切る
RequireSenderAuthenticationEnabled 組織内外どちらからのメールも許可する場合は "1"、組織内からのみ許可する場合は "0"
MemberDepartRestriction グループ脱退時に承認不要(オープン)の場合は "1"、承認必要(クローズ)の場合は "0"
MemberJoinRestriction 参加時に承認不要(オープン)の場合は "1"、承認必要(クローズ)の場合は "0"、所有者の承認の場合は "2"

※Nameのみ必須です。それ以外の項目で不要なものは、CSVファイルの列ごと削除しても問題ありません。

2. UTF-8形式で保存する

  1. メモ帳へ必要な内容の記載が終わったら [ファイル] をクリックします。
  2. [名前を付けて保存] をクリックします。
  3. 「ファイルの種類」で [すべてのファイル] を選択します。
  4. 「文字コード」のプルダウンメニューより [UTF-8(BOM付き)] を選択し、[保存] をクリックします。

3. CSVファイルをインポートしてコマンドレットを実行する

<構文>

Import-Csv <保存先のパス\ファイル名> | Foreach {New-DistributionGroup -Name $_.Name -DisplayName $_.DisplayName -Alias $_.Alias -PrimarySmtpAddress $_.PrimarySmtpAddress -Managedby $_.Managedby.split(";") -Members $_.Members.split(";") -RequireSenderAuthenticationEnabled ($_.RequireSenderAuthenticationEnabled -eq "0") -MemberDepartRestriction $_.MemberDepartRestriction -MemberJoinRestriction $_.MemberJoinRestriction }

<実行例>

Import-Csv C:\temp\DistributionGroup.csv | Foreach {New-DistributionGroup -Name $_.Name -DisplayName $_.DisplayName -Alias $_.Alias -PrimarySmtpAddress $_.PrimarySmtpAddress -Managedby $_.Managedby.split(";") -Members $_.Members.split(";") -RequireSenderAuthenticationEnabled ($_.RequireSenderAuthenticationEnabled -eq "0") -MemberDepartRestriction $_.MemberDepartRestriction -MemberJoinRestriction $_.MemberJoinRestriction }

※実行例では、Cドライブ直下のTempフォルダー内に保存している DistributionGroup.csv を読み込み、グループを作成しています。

 

 

 

配布グループのメンバーを一括で追加する手順

<CSVファイル書式>

Name,Member
group@contoso.com,user@contoso.com
group@contoso.com,user2@contoso.com
group2@contoso.com,user3@contoso.com

※上記の例では、group@contoso.com のメンバーとして user@contoso.com と user2@contoso.com を、group2@contoso.com のメンバーとして user3@contoso.com を追加します。CSVファイルは文字化け防止のためUTF-8形式で保存してください。

<構文>
Import-Csv <保存先のパス\ファイル名> | Foreach {Add-DistributionGroupMember -Identity $_.Name -Member $_.Member}

<実行例>
Import-Csv "C:\temp\DistributionGroup.csv" | Foreach {Add-DistributionGroupMember -Identity $_.Name -Member $_.Member}

 

 

 

配布グループの所有者を一括で追加する手順

<CSVファイル書式>

Identity,ManagedBy
group01@contoso.com,admin@contoso.com;UserA@contoso.com
group02@contoso.com,UserB@contoso.com
group03@contoso.com,UserC@contoso.com
注意
以下のコマンドレットは上書き保存される動作です。既に所有者が設定されている場合、CSVファイルに記載されていない既存の所有者は削除されます。既存の所有者を残したまま追加したい場合は、事前に Get-DistributionGroup で現在の所有者一覧を取得し、CSVファイルに含めておいてください。

<構文>
Import-Csv "<保存先のパス\ファイル名.csv>" | Foreach {Set-DistributionGroup -Identity $_.Identity -Managedby $_.ManagedBy.split(";") }

<実行例>
Import-Csv "C:\temp\DistributionGroup.csv" | Foreach {Set-DistributionGroup -Identity $_.Identity -Managedby $_.ManagedBy.split(";") }

 

 

 

参加・脱退制限は文字列でも指定できる

この記事のCSV例では、MemberDepartRestrictionMemberJoinRestriction を数値(0・1・2)で指定していますが、実際にこれらのパラメーターが受け取る値は"Closed"・"Open"・"ApprovalRequired"という文字列です(数値との対応は Closed=0、Open=1、ApprovalRequired=2)。

数値のままでも動作しますが、スクリプトを見返したときの分かりやすさを重視する場合は、CSVの段階で文字列(Open/Closed/ApprovalRequired)を直接入力しておく方法もおすすめです。

Name,MemberDepartRestriction,MemberJoinRestriction
DL01,Closed,Closed
DL02,Open,ApprovalRequired

また、New-DistributionGroup は既定では通常の配布グループを作成しますが、-Type Security を追加で指定することで、メールが有効なセキュリティグループとして作成することも可能です。ファイル共有やアプリの権限管理などにも流用したい場合は、あわせて検討してみてください。

 

 

 

よくある質問

Q. Managedbyや所有者を空欄にした場合はどうなりますか?
A. 所有者が指定されない場合、コマンドレットを実行した管理者アカウントが自動的に所有者として設定されます。

Q. 所有者を一括追加すると、既存の所有者が消えてしまいました。
A. Set-DistributionGroup -Managedby は指定した内容で上書きされる仕様です。既存の所有者を維持したい場合は、事前に Get-DistributionGroup -Identity <グループ名> | Select ManagedBy などで現在の所有者を確認し、CSVファイルに含めてから実行してください。

Q. CSVファイルの一部の列を省略しても大丈夫ですか?
A. 配布グループ作成の場合、必須なのはNameのみです。それ以外の列は、その項目を設定しない場合は列ごと削除してCSVファイルを作成しても問題ありません。

 

 

 

まとめ

複数の配布グループを効率的に作成・管理したい場合は、以下のポイントを押さえておきましょう。

  1. CSVファイルに情報をまとめ、New-DistributionGroupで一括作成する
  2. メンバーの追加はAdd-DistributionGroupMember、所有者の追加(上書き)はSet-DistributionGroup -Managedbyを使う
  3. 所有者の一括設定は上書き動作のため、既存の所有者を残したい場合は事前に一覧を取得してからCSVに含める
  4. 参加・脱退制限は数値でも文字列(Open/Closed/ApprovalRequired)でも指定可能。可読性重視なら文字列がおすすめ

部署やプロジェクトごとに配布グループを大量に作成する必要がある場合は、この記事のCSV+PowerShellの組み合わせを活用することで、作業時間を大幅に短縮できます。

 

 

it-bibouroku.hateblo.jp

it-bibouroku.hateblo.jp

it-bibouroku.hateblo.jp