VK WorkSpace On-Premise logo
Помощь
Обновлена 20 октября 2026 г. в 14:33

Миграция переговорных комнат из Exchange

Шаг 1. Выгрузите переговорные комнаты из Exchange

  1. Подключитесь к машине с Exchange.

  2. Создайте скрипт с расширением ps1: export_confrooms.ps1.

  3. В файл export_confrooms.ps1 вставьте следующий код:

    Скачать скрипт

    $confroomMailboxes = Get-Mailbox -ResultSize Unlimited -RecipientTypeDetails RoomMailbox$confroomLists = Get-DistributionGroup -ResultSize Unlimited -Filter {RecipientTypeDetails -eq "RoomList"}$equipmentMailboxes = Get-Mailbox -ResultSize Unlimited -RecipientTypeDetails EquipmentMailbox$resources = @()foreach ($confroom in $confroomMailboxes) {    $adUser = Get-ADUser -Identity $confroom.Guid -Properties info, co, Country, State, City, StreetAddress, PostalCode, Office    $confroomDetails = [PSCustomObject]@{        "ResourceType" = "Confroom"        "GUID" = $confroom.Guid        "Name" = $confroom.DisplayName        "Enabled" = $confroom.IsMailboxEnabled        "Capacity" = $confroom.ResourceCapacity        "Comment" = $adUser.info        "Country" = $adUser.co        "State" = $adUser.State        "City" = $adUser.City        "Street" = $adUser.StreetAddress        "Postal_code" = $adUser.PostalCode        "Office" = $adUser.Office        "Location_GUID" = $emptyVar        "Location_name" = $emptyVar    }    foreach ($list in $confroomLists) {        $members = Get-DistributionGroupMember -Identity $list.DisplayName -ResultSize Unlimited        if ($members.PrimarySmtpAddress -contains $confroom.PrimarySmtpAddress) {            $confroomDetails.Location_GUID = $list.Guid            $confroomDetails.Location_name = $list.DisplayName            break        }    }    $resources += $confroomDetails}foreach ($equipment in $equipmentMailboxes) {    $equipmentDetails = [PSCustomObject]@{        "ResourceType" = "Equipment"        "GUID" = $equipment.Guid        "Name" = $equipment.DisplayName        "Enabled" = $confroom.IsMailboxEnabled    }    $resources += $equipmentDetails}$csvFilePath = "confrooms_result.csv"$resources | Export-Csv -Path $csvFilePath -Encoding UTF8 -NoTypeInformationWrite-Host "Confrooms information has been exported to $csvFilePath"
  4. Откройте Exchange Management Shell и запустите скрипт:

    .\export_confrooms.ps1

Результат будет записан в файл confrooms_result.csv, который появится в папке со скриптом. Вы можете задать другой путь до файла изменив в скрипте переменную $csvFilePath.

Шаг 2. Проверьте формат данных

Перед загрузкой данных в Почту VK WorkSpace, обязательно проверьте формат данных. Данные должны быть представлены в формате csv и иметь следующую структуру:

Пример данных

"ResourceType","GUID","Name","Enabled","Capacity","Comment","Country","State","City","Street","Postal_code","Office","Location_GUID","Location_name""Confroom","de45f0a1-470f-4257-928d-121f86cdc386","Переговорная 1","True","15","для деловых встреч","Russia","Moscow","Moscow oblast","Lesnaya","123456","North Tower",,"Confroom","8c46c189-6bef-494e-81ab-04dcdf9d7d58","Переговорная 2","True","100","заметка","Россия","Московская область","Москва","Ленинградский пр-кт, 7","121314","Главный Офис","1f00a72e-d681-44c7-be5f-fd7b500f3c9f","Строение A, Этаж 5""Equipment","e2c900af-6449-436f-8fba-e5b53c065cd7","Микрофон","True",,,,,,,,,,"Equipment","dd8b8bcb-2b34-416d-b80c-6f02bacf8777","Проектор","False",,,,,,,,,,

Основные поля:

  • ResourceType — тип ресурса, должен принимать одно из двух значений: Confroom (переговорная комната) или Equipment (оборудование). Строки с другими значениями ResourceType будут проигнорированы.
  • GUID — уникальный идентификатор переговорки/оборудования.
  • Name — название переговорки/оборудования. Максимальная длина: 50 символов. Более длинные названия будут обрезаны до 50 символов.
  • Enabled — флаг, который позволяет пометить, используется ли переговорка/оборудование. Должен принимать одно из двух значений: True или False.

Поля необходимые только для переговорных комнат:

Остальные поля заполняются только для переговорок, в случае с оборудованием они не учитываются

  • Capacity — вместимость переговорной комнаты. Числовое значение. Если не заполнить или указать символы, будет выбрано значение по умолчанию — 0.
  • Comment — комментарий.
  • Country, State, City, Street, Postal_code — страна, область, город, улица, почтовый индекс.
  • Office — название офиса. В нашей БД для этого поля есть лимит 100 символов, поэтому при записи в БД более длинные названия будут обрезаны
  • Location_GUID — уникальный идентификатор локации. Локация — это расположение переговорных комнат внутри офиса. Например, конкретное здание офиса или этаж.
  • Location_name — название локации. Максимальная длина: 50 символов.

Шаг 3. Перенесите данные в Почту VK WorkSpace

  1. Подключитесь к контейнеру confroom:

    docker exec -it confroom1 bash
  2. Перенесите в контейнер файл confrooms_result.csv после того как проверили формат данных на предыдущем шаге.

  3. Выполните команду указав путь до файла confrooms_result.csv:

    python manage.py import_exchange_confrooms /path/to/confrooms_result.csv

После выполнения скрипта должно появиться сообщение:

Successfully import external confrooms

Скрипт можно перезапускать. Если с какими-то данными возникнет ошибка, то можно исправить эти данные в файле и запустить скрипт заново, они обновятся по уникальному GUID из Exchange.

Особенности миграции

  1. Будут перенесены следующие данные:
    • GUID переговорной комнаты.
    • Название переговорной комнаты
    • Вместимость.
    • Комментарий.
    • Название офиса.
    • Адрес офиса: страна, область, город, улица, почтовый индекс.
    • GUID оборудования и его название.
  2. Для оборудования будет перенесено только название, так как в Exchange оборудование не привязано к конкретным переговорным комнатам.
  3. В Exchange у переговорной комнаты нет отдельного поля с информацией о ее расположении внутри офиса (строение/этаж).

Технический писатель: Груздев Никита

Была ли статья полезна?