ExchangeOnline

ExchangePowerShellを使用して会議室を一括作成する

会議室メールボックスをCSVファイルから一括作成する方法について記載する。

検証環境について

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

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

ExchangePowershellのモジュール名とバージョン
ExchangeOnlineManagement:3.4.0

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

使用するコマンド

New-Mailbox

Set-MailboxRegionalConfiguration

Set-MailboxCalendarConfiguration

Set-CalendarProcessing

Set-MailboxFolderPermission

CSVファイルを作成する

使用例

#CSVの保存先 windowsOSの場合、デスクトップに保存する
$csvSavePath = "$env:USERPROFILE\Desktop"

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

#指定したいパラメータ
$roomPrmCSV = [PSCustomObject]@{
    DisplayName = $null
    PrimarySmtpAddress = $null
    ResourceCapacity = $null
    Office = $null
}

#CSVファイルとして保存する
$roomPrmCSV | Export-Csv -Path "${csvSavePath}\${csvFileName}" `
-Encoding utf8 -NoTypeInformation

CSV記載例

DisplayNamePrimarySmtpAddressOfficeResourceCapacity
会議室101101_room@365ps.jphogehogeビル4
会議室102102_room@365ps.jphugahugaビル5
会議室103103_room@365ps.jppiyopiyoビル7

各パラメータの内容

  • DisplayName
    アドレス帳に表示される会議室の名前
  • PrimarySmtpAddress
    アドレス帳に表示される会議室のメールアドレス
  • ResourceCapacity
    会議室内にどれだけ座席があるかを示す数値
  • Office
    会議室の場所。ビル名や事務所名、住所を記載する。

CSVを読み込み会議室を作成する

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

#作成したCSVファイルを読み込む
$csvData = Import-Csv "$env:USERPROFILE\Desktop\roomList.csv"

#CSVに記載した会議室の数だけ繰り返す
foreach($roomInfo in $csvData){
    #CSVのデータを取り出し会議室を作成する
    New-Mailbox -Room `
        -Name $roomInfo.PrimarySmtpAddress.Split("@")[0] `
        -DisplayName $roomInfo.DisplayName `
        -PrimarySmtpAddress $roomInfo.PrimarySmtpAddress `
        -ResourceCapacity $roomInfo.ResourceCapacity
}

#上記で作成したすべての会議室のカレンダー設定を変更する
foreach($roomInfo in $csvData){
    #会議室メールボックスの言語、タイムゾーンを設定する
    Set-MailboxRegionalConfiguration `
        -Identity $roomInfo.PrimarySmtpAddress `
        -Language ja-JP `
        -LocalizeDefaultFolderName `
        -TimeZone "Tokyo Standard Time"

    #カレンダーのタイムゾーン、開始時間、終了時間を変更する
    Set-MailboxCalendarConfiguration `
        -Identity $roomInfo.PrimarySmtpAddress `
        -WorkingHoursStartTime 10:00:00 `
        -WorkingHoursEndTime 18:00:00 `
        -WorkingHoursTimeZone "Tokyo Standard Time"

    #会議室予約時の件名、本文を表示し、非公開予定を登録することを許可する
    Set-CalendarProcessing `
        -Identity $roomInfo.PrimarySmtpAddress `
        -AddOrganizerToSubject $false `
        -DeleteSubject $false `
        -DeleteComments $false `
        -RemovePrivateProperty $false

    #予定表の閲覧権限を変更する
    Set-MailboxFolderPermission `
        -Identity  ($roomInfo.PrimarySmtpAddress + ":\予定表") `
        -User "既定" `
        -AccessRights Reviewer
}

Disconnect-ExchangeOnline -Confirm:$false

問い合わせフォーム

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

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

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

    関連記事

    1. ExchangeOnline

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

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

    2. ExchangeOnline

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

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

    3. ExchangeOnline

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

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

    4. ExchangeOnline

      ExchangePowerShellを使用してMicrosoft365グループへCSVからメンバーを…

      Microsoft365グループにアカウントを一括追加する方…

    最近の記事

    PAGE TOP