ExchangeOnline

ExchangePowerShellを使用してMicrosoft365グループへCSVからメンバーを一括追加する

Microsoft365グループにアカウントを一括追加する方法について記載する。

検証環境について

動作確認した検証環境は以下の通り。

OS:Microsoft Windows 11 Enterprise
OSbuildバージョン:10.0.22621
PowerShellのバージョン:7.4.0

GraphPowershellのモジュール名とバージョン
Microsoft.Graph.Authentication 2.11.1
Microsoft.Graph.Identity.DirectoryManagement 2.11.1

サインインアカウントの権限はグローバル管理者。

使用するコマンド

Get-UnifiedGroupLinks

使用例

Get-UnifiedGroupLinks -Identity 365group001@365ps.jp -LinkType subscribers

取得できる情報例

Name    RecipientType
----    -------------
user001 UserMailbox
user002 UserMailbox
user003 UserMailbox

Add-UnifiedGroupLinks

使用例

Add-UnifiedGroupLinks -Links user001@365ps.jp -LinkType Subscribers

CSVファイルを作成する

使用例

$csvSavePath = "$env:USERPROFILE\Desktop"

#CSVのファイル名
$csvFileName = "365GroupLinkList.csv"

$365GroupCSV = [PSCustomObject]@{
    PrimarySmtpAddress = $null
    LinkType = $null
    Links = $null
}

$365GroupCSV | Export-Csv -Path "${csvSavePath}\${csvFileName}" `
-Encoding utf8 -NoTypeInformation

CSV記入例

PrimarySmtpAddressLinkTypeLinks
365group001@365ps.jpMembersuser001@365ps.jp
365group001@365ps.jpOwnersuser002@365ps.jp
365group001@365ps.jpSubscribersuser003@365ps.jp
365group002@365ps.jpMembersuser001@365ps.jp

CSVを読み込みMicrosoft365グループにメンバーを追加する

#CSVの保存先を指定する
$csvSavePath = "$env:USERPROFILE\Desktop"

#読み込むCSVファイル名を指定する
$csvFileName = "365GroupLinkList.csv"

#編集したCSVファイルを読み込む
$365GroupLinkList = Import-Csv -Path "${csvSavePath}\${csvFileName}"

#ExchangePowerShellに接続する
Connect-ExchangeOnline -ShowBanner:$false

#読み込んだCSVの値の数だけ繰り返す
foreach($365GroupLink in $365GroupLinkList){
    #OwnersもしくはSubscribersとして追加する場合は
    #事前にMembersとして登録されている必要がある
    #LinkTypeがMembersではない場合 = LinkTypeがOwnersかSubscribersの場合
    if($365GroupLink.LinkType -eq "Owners" -or `$365GroupLink.LinkType -eq "Subscribers"){
        #対象の365グループの役割:Membersのアカウントを取得する
        $membersList = Get-UnifiedGroupLinks `
            -Identity $365GroupLink.PrimarySmtpAddress `
            -LinkType Members

        #取得したMembersにアカウントが含まれていない場合
        #Membersとして追加する
        if($ownersList -notcontains $365GroupLink.Links){
             Add-UnifiedGroupLinks `
                 -Identity $365GroupLink.PrimarySmtpAddress `
                 -Links $365GroupLink.Links `
                 -LinkType Members `
                 -Confirm:$false
        }
    }

    Add-UnifiedGroupLinks `
        -Identity $365GroupLink.PrimarySmtpAddress `
        -LinkType $365GroupLink.LinkType `
        -Links $365GroupLink.Links `
        -Confirm:$false
}

#ExchangeOnlinePowerShellから切断する
Disconnect-ExchangeOnline -Confirm:$false

問い合わせフォーム

リンク切れのご報告や、記載内容に不備がありましたら、お手数をおかけしますが
以下お問い合わせフォームからご報告をお願い致します。
コマンドの仕様確認やエラー内容の確認、対処方法については、ご契約されているMicrosoftかCSPへお問い合わせください。
※いただきました内容は確認させていただきますが、必ずしも回答をお約束するものではございません。

    ExchangePowerShellを使用して会議室を一括作成する前のページ

    TeamsPowerShellを使用して全てチームのユーザー一覧を一括取得する次のページ

    関連記事

    1. ExchangeOnline

      ExchangePowershellを使用して配布リストのメンバーを一括取得する

      配布リストに所属するメンバーの一覧を一括取得しCSVファイル…

    2. ExchangeOnline

      ExchangePowerShellを利用して配布リストのメンバーを一括更新する

      すべての配布リストのメンバーを一括更新する方法について記載す…

    3. ExchangeOnline

      ExchangePowerShellからMicrosoft365グループのメンバー一覧を取得する

      本記事ではチーム機能が有効化されていないMicrosoft3…

    4. ExchangeOnline

      ExchangeOnlineでメールが検疫された際にユーザーに通知メールが送信されるよう設定する

      本記事作成時点では、デフォルトの設定の場合、管理者にもユーザーにも検…

    5. ExchangeOnline

      ExchangePowerShellを使用して共有メールボックスのアクセス権を一括取得する

      共有メールボックスに対して付与されているアクセス権を一括取得…

    最近の記事

    PAGE TOP