Основные сведения об импорте и экспорте файлов в командной консоли Exchange

 

Применимо к: Exchange Server 2010 SP2, Exchange Server 2010 SP3

Последнее изменение раздела: 2015-03-09

Microsoft Exchange Server 2010 использует возможности удаленного интерфейса командной строки Windows PowerShell для установки соединения между сервером или рабочей станцией, откуда вы администрируете Exchange, и администрируемым сервером Exchange 2010. В Exchange 2010 это называется удаленной командной консолью Exchange. Удаленная командная консоль используется, даже если объектом администрирования является локальный сервер Exchange 2010. Дополнительные сведения о локальной и удаленной командной консоли см. в разделе Обзор командной консоли Exchange.

В Exchange реализация удаленной командной консоли повлекла за собой изменения в процедуре импорта и экспорта файлов с сервера Exchange 2010. В этом разделе описываются причины изменения процедуры импорта и экспорта файлов, а также способы импорта и экспорта файлов между локальным сервером или рабочей станцией и удаленным сервером Exchange 2010.

Сеансы Windows PowerShell

Чтобы понять, почему для импорта и экспорта файлов в удаленной командной консоли требуется специальный синтаксис, необходимо сначала узнать, как реализована командная консоль в Exchange 2010. Командная консоль использует сеансы Windows PowerShell, являющиеся средами, в которых переменные, командлеты и т. п. могут совместно использовать данные. Новый сеанс создается при каждом открытии нового окна командной консоли. Командлеты, запускаемые в каждом окне, могут получать доступ к переменным и прочим данным, хранящимся в этом окне, однако не могут получать доступ к переменным в других открытых окнах консоли. Это связано с тем, что каждая переменная содержится в собственном сеансе Windows PowerShell. Сеансы Windows PowerShell также называются пространствами выполнения.

Удаленная командная консоль Exchange 2010 имеет два сеанса: локальный и удаленный. Локальный сеанс — это сеанс Windows PowerShell, который запущен на локальном компьютере. Этот сеанс содержит все командлеты, которые поставляются с Windows PowerShell. Данный сеанс также имеет доступ к локальной файловой системе.

Удаленный сеанс — это сеанс Windows PowerShell, который запущен на удаленном сервере Exchange. В этом сеансе выполняются все командлеты Exchange. У данного сеанса есть доступ к файловой системе сервера Exchange.

При подключении к удаленному серверу Exchange подключение осуществляется между локальным сеансом и удаленным сеансом на сервере Exchange. Это подключение позволяет запускать командлеты Exchange на удаленном сервере Exchange в локальном сеансе даже если на локальном компьютере не установлен ни один командлет Exchange.

Важно!

Если командная консоль открыта на сервере Exchange 2010, процесс подключения будет аналогичным и будет создано два сеанса. Это означает, что независимо от того, открыта ли командная консоль на сервере Exchange 2010 или на удаленной рабочей станции, для импорта и экспорта файлов необходимо использовать один и тот же новый синтаксис.

Командлеты Exchange, запущенные в удаленном сеансе на удаленном сервере Exchange, не имеют доступа к локальной файловой системе. Это означает, что для импорта файлов в локальную файловую систему и экспорта файлов из нее нельзя самостоятельно использовать командлеты Exchange. Для передачи файлов в локальную файловую систему и из нее требуется дополнительный синтаксис, чтобы командлеты Exchange, запущенные на удаленном сервере Exchange, смогли получить доступ к данным. Дополнительные сведения о требуемом синтаксисе см. в подразделе "Импорт и экспорт файлов в удаленной командной консоли" настоящего раздела.

ПримечаниеПримечание.
Для импорта и экспорта файлов на пограничных транспортных серверах специальный синтаксис не требуется. Дополнительные сведения о роли пограничного транспортного сервера см. в подразделе "Импорт и экспорт файлов на пограничных транспортных серверах" настоящего раздела.

Импорт и экспорт файлов в удаленной командной консоли

Удаленная командная консоль используется ролями сервера почтовых ящиков, транспортного сервера-концентратора, сервера единой системы обмена и сервера клиентского доступа в Exchange 2010. Для импорта и экспорта файлов требуется специальный синтаксис, поскольку они используют удаленную командную консоль. Роль пограничного транспортного сервера использует локальную командную консоль и другой синтаксис. Дополнительные сведения о роли пограничного транспортного сервера см. в подразделе "Импорт и экспорт файлов на пограничных транспортных серверах" настоящего раздела.

Импорт файлов в удаленной командной консоли

Синтаксис для импорта файлов в Exchange 2010 используется при отправке файла в командлету, запущенному на сервере Exchange 2010, с локального компьютера или сервера. Командлеты, которые принимают данные из файла на локальном компьютере, будут иметь параметр, называемый FileData (или с похожим именем). Чтобы определить, какой параметр следует использовать, см. справку по соответствующему командлету.

Командная консоль должна знать, какой файл необходимо передать командлету Exchange 2010, а также какой параметр будет принимать данные. Для этого используйте следующий синтаксис.

<Cmdlet> -FileData ([Byte[]]$(Get-Content -Path <local path to file> -Encoding Byte -ReadCount 0))

Например, следующая команда импортирует файл C:\MyData.dat в параметр FileData вымышленного командлета Import-SomeData.

Import-SomeData -FileData (Byte[]]$(Get-Content -Path "C:\MyData.dat" -Encoding Byte -ReadCount 0))

При выполнении команды выполняются следующие действия:

  1. Удаленная командная консоль принимает команду.

  2. Удаленная командная консоль оценивает команду и определяет, имеется ли встроенная команда в значении, предоставленном параметром FileData.

  3. Удаленная командная консоль прекращает оценку команды Import-SomeData и запускает команду Get-Content. Команда Get-Content считывает данные из файла MyData.dat.

  4. Удаленная командная консоль временно сохраняет данные из команды Get-Content в качестве объекта Byte[], чтобы можно было передать данные в командлет Import-SomeData.

  5. Возобновление выполнения команды Import-SomeData. Удаленная командная консоль отправляет запрос на запуск командлета Import-SomeData удаленному серверу Exchange 2010 вместе с объектом, созданным командлетом Get-Content.

  6. Командлет Import-SomeData выполняется на удаленном сервере Exchange 2010 и данные, сохраненные во временном объекте, созданном командлетом Get-Content, передаются параметру FileData. Командлет Import-SomeData обрабатывает входные данные и выполняет все необходимые действия.

Некоторые командлеты используют следующий альтернативный синтаксис, который выполняет те же действия, что и предыдущий синтаксис.

[Byte[]]$Data = Get-Content -Path <local path to file> -Encoding Byte -ReadCount 0
Import-SomeData -FileData $Data

При использовании альтернативного синтаксиса выполняются аналогичные действия. Единственное различие заключается в том, что вместо выполнения всей операции за один раз, данные, извлекаемые из локального файла, сохраняются в переменной, на которую можно ссылаться после создания. Эта переменная впоследствии используется в команде импорта для передачи содержимого локального файла командлету Import-SomeData. Двухэтапную процедуру рекомендуется использовать в случае, если необходимо использовать данные из локального файла в более чем одной команде.

Существует ряд ограничений, которые нужно учитывать при импорте файлов. Дополнительные сведения см. в подразделе "Ограничения импорта файлов" настоящего раздела.

Инструкции о том, как импортировать данные в Exchange 2010, см. в справке по соответствующей функции.

Ограничения импорта файлов

При импорте данных в удаленной командной консоли необходимо задать ограничения, чтобы сохранить целостность передаваемых данных. Невозможно возобновить выполняющиеся передачи, если они прерваны. Кроме того, поскольку передаваемые данные сохраняются в памяти удаленного сервера, сервер должен быть защищен от переполнений памяти, возникающих при передаче очень больших объемов данных.

По этим причинам объем данных, передаваемых на удаленный сервер Exchange 2010 с локального компьютера или сервера, имеет следующие ограничения:

  • 500 МБ для каждого выполняемого командлета

  • 75 МБ для каждого объекта, передаваемого командлету

При превышении любого из этих ограничений выполнение командлета и связанного с ним конвейера будет остановлено и возникнет ошибка. Чтобы понять, как работают эти ограничения, см. примеры в следующей таблице.

Примеры ограничений при импорте данных

Число объектов Размер объекта (МБ) Общий размер (МБ) Результат операции

10

40

400

Операция выполняется успешно, поскольку размер ни одного из объектов не превышает 75 МБ, а общий размер данных, передаваемых командлету, не превышает 500 МБ.

5

80

400

Операция заканчивается с ошибкой, поскольку несмотря на то, что общий объем передаваемых данных составляет всего лишь 400 МБ, размера каждого отдельного объекта превышает 75 МБ.

120

5

600

Операция заканчивается с ошибкой, поскольку несмотря на то, что размер каждого отдельного объекта составляет всего лишь 5 МБ, общий объем данных, передаваемых командлету, превышает 500 МБ.

Из-за установленных ограничений на размер передаваемых данных между удаленным сервером Exchange 2010 и локальным компьютером не все командлеты, которые когда-то поддерживали импорт, будут поддерживать этот метод передачи данных. Чтобы узнать, поддерживает ли конкретный командлет этот метод, см. справку для данного командлета.

Эти ограничения должны соответствовать большинству обычных операций, которые можно выполнить на сервере Exchange 2010. Если установлены более низкие значения ограничений, некоторые обычные операции будут завершаться с ошибкой из-за превышения новых ограничений. Если установлены более высокие значения ограничений, передача данных может занять более продолжительное время. Кроме того, вероятность прерывания передачи данных в этом случае существенно повышается. Если на удаленном сервере недостаточно памяти для хранения всего блока данных в ходе передачи, ресурсы памяти будут исчерпаны. Не рекомендуется изменять значения по умолчанию, поскольку любое отклонение может привести к потере данных.

Экспорт файлов в удаленной командной консоли

Синтаксис для экспорта файлов в Exchange 2010 используется для приема данных их командлета, запущенного на удаленном сервере Exchange 2010, и хранения данных на локальном компьютере или сервере. Командлеты, предоставляющие данные, которые можно сохранить в локальный файл, выводят объект, содержащий свойство FileData (или с похожим именем). В зависимости от используемого командлета свойство FileData заполняется только для объекта, который выводится в определенных ситуациях. Чтобы определить правильное свойство, см. справку по соответствующему командлету.

Командная консоль должна знать, что пользователь хочет сохранить данные, хранящиеся в свойстве FileData, на локальном компьютере. Для этого используется следующий синтаксис.

<cmdlet> | ForEach { $_.FileData | Add-Content <local path to file> -Encoding Byte }

Например, следующая команда экспортирует данные, хранящиеся в свойстве FileData, в объект, созданный с помощью фиктивного командлета Export-SomeData. Экспортированные данные сохраняются в указанный файл на локальном компьютере (в данном случае MyData.dat).

ПримечаниеПримечание.
В этой процедуре используется командлет ForEach, объекты и конвейеризация. Дополнительные сведения о каждом из перечисленных объектов см. в следующих разделах:
Передача по конвейеру
Структура данных
Export-SomeData | ForEach { $_.FileData | Add-Content C:\MyData.dat -Encoding Byte }

При выполнении команды выполняются следующие действия:

  1. Удаленная командная консоль принимает команду.

  2. Удаленная командная консоль вызывает командлет Export-SomeData на удаленном сервере Exchange 2010.

  3. Выходной объект, созданный командлетом Export-SomeData, передается обратно в локальный сеанс консоли через конвейер.

  4. Затем выходной объект передается командлету ForEach, содержащему блок сценария.

  5. В блоке сценария выполняется обращение к свойству FileData на текущем объекте в конвейере. Данные, содержащиеся в свойстве FileData, передаются командлету Add-Content.

  6. Командлет Add-Content сохраняет данные, переданные из свойства FileData, в файл MyData.dat, расположенный в локальной файловой системе.

Инструкции о том, как экспортировать данные из Exchange 2010, см. в справке по соответствующей функции.

Импорт и экспорт файлов на пограничных транспортных серверах

В отличие от других ролей сервера Exchange 2010, роль пограничного транспортного сервера не использует удаленную командную консоль. Роль пограничного транспортного сервера использует локальную командную консоль. Это связано с тем, для работы удаленной командной консоли требуется Служба каталогов Active Directory и управлением доступом на основе ролей (RBAC). Роль пограничного транспортного сервера использует службы Служба каталогов Active Directory облегченного доступа к каталогам.

Поскольку роль пограничного транспортного сервера не использует удаленную командную консоль, новые процедуры импорта и экспорта файлов к ней не относятся. Командлеты, запущенные на сервере с установленной ролью пограничного транспортного сервера, могут принимать файлы напрямую без дополнительного синтаксиса. Синтаксис, используемый для импорта и экспорта файлов на пограничных транспортных серверах, см. в справке по соответствующему командлету.