Импортирует команды из другого сеанса и сохраняет их в модуле Windows PowerShell.

Синтаксис

Export-PSSession [-Session] <PSSession> [-OutputModule] <string> [[-CommandName] <string[]>] [[-FormatTypeName] <string[]>] [-AllowClobber] [-ArgumentList <Object[]>] [-CommandType {<Alias> | <Function> | <Filter> | <Cmdlet> | <ExternalScript> | <Application> | <Script> | <All>}] [-Кодирование <string>] [-Force] [-Module <string[]>] [<CommonParameters>]

Описание

Командлет Export-PSSession получает командлеты, функции, псевдонимы и команды других типов из другого сеанса PSSession на локальном или удаленном компьютере и сохраняет их в модуле Windows PowerShell. Чтобы добавить команды из модуля в текущий сеанс, воспользуйтесь командлетом Import-Module.

В отличие от командлета Import-PSSession, который импортирует команды из другого сеанса PSSession в текущий сеанс, командлет Export-PSSession сохраняет команды в модуле. Эти команды не импортируются в текущий сеанс.

Прежде чем экспортировать команды, необходимо помощью командлета New-PSSession создать сеанс PSSession, содержащий команды, которые требуется экспортировать. Затем необходимо с помощью командлета Export-PSSession экспортировать нужные команды. По умолчанию командлет Export-PSSession экспортирует все команды, кроме уже имеющихся в текущем сеансе, однако с помощью параметра CommandName можно задать конкретные команды для экспорта.

Командлет Export-PSSession использует функцию косвенного удаленного взаимодействия Windows PowerShell. При импорте команд в текущий сеанс они косвенно выполняются в исходном сеансе или в аналогичном сеансе на исходном компьютере.

Параметры

-AllowClobber

Экспортирует указанные команды, даже если их имена совпадают с именами команд в текущем сеансе.

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

Командлет Export-PSSession не импортирует команды, имена которых совпадают с именами команд в текущем сеансе. Поведение по умолчанию предотвращает конфликты имен команд.

Обязательно?

false

Позиция?

named

Значение по умолчанию

False

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

-ArgumentList <Object[]>

Экспорт варианта команды, получаемого при использовании заданных аргументов (значений параметров).

Например, чтобы экспортировать вариант команды Get-Item на диске сертификатов (Cert:) в сеансе $s, введите команду "export-pssession -session $s -command Get-Item -argumentlist cert:".

Обязательно?

false

Позиция?

named

Значение по умолчанию

нет

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

-CommandName <string[]>

Экспортировать только команды с заданными именами или шаблонами имен. Подстановочные знаки разрешены. Используйте имя "CommandName" или псевдоним "Name".

По умолчанию командлет Export-PSSession экспортирует из сеанса PSSession все команды, кроме тех, имена которых совпадают с именами команд в текущем сеансе. Это позволяет избежать скрытия и замены команд в текущем сеансе импортируемыми командами. Чтобы экспортировать все команды, даже те, которые скрывают или заменяют другие команды, следует использовать параметр AllowClobber.

Если используется параметр CommandName, файлы форматирования команд не экспортируются, если не используется параметр FormatTypeName. Аналогично, если используется параметр FormatTypeName, ни одна из команд не экспортируется, если не используется параметр CommandName.

Обязательно?

false

Позиция?

3

Значение по умолчанию

All commands in the session.

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

true

-CommandType <CommandTypes>

Экспортирует командные объекты только указанных типов. Используйте "CommandType" или псевдоним "Type".

Допустимые значения:

-- Alias: все псевдонимы Windows PowerShell в текущем сеансе.

-- All: команды всех типов. Эквивалентно "Get-Command *".

-- Application: все файлы за исключением файлов Windows PowerShell, которые присутствуют в путях, указанных в переменной среды Path ($env:path), в том числе файлы TXT, EXE и DLL.

-- Cmdlet: командлеты в текущем сеансе. По умолчанию используется значение "Cmdlet".

-- ExternalScript: все файлы PS1, которые присутствуют в путях, указанных в переменной среды Path ($env:path).

-- Filter и Function: все функции Windows PowerShell.

-- Script: блоки скриптов в текущем сеансе.

Обязательно?

false

Позиция?

named

Значение по умолчанию

All commands in the session.

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

-Кодирование <string>

Задает кодировку выходных файлов. Допустимые значения: "Unicode", "UTF7", "UTF8", "ASCII", "UTF32", "BigEndianUnicode", "Default" и "OEM". По умолчанию используется значение "UTF-8".

Обязательно?

false

Позиция?

named

Значение по умолчанию

UTF-8

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

-Force

Перезаписывает существующий выходной файл (или файлы), даже если для него установлен атрибут "только чтение".

Обязательно?

false

Позиция?

named

Значение по умолчанию

False

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

-FormatTypeName <string[]>

Экспортирует инструкции по форматированию только для заданных типов Microsoft .NET Framework. Введите имена типов. По умолчанию команда Export-PSSession экспортирует инструкции по форматированию для всех типов .NET Framework, не принадлежащих к пространству имен System.Management.Automation.

Значением этого параметра должно быть имя типа, возвращаемое командой Get-FormatData в сеансе, из которого импортируются команды. Чтобы получить все данные форматирования в удаленном сеансе, введите *.

Если используется параметр FormatTypeName, ни одна из команд не экспортируется, если не используется параметр CommandName.

Аналогично, если используется параметр CommandName, файлы форматирования команд не экспортируются, если не используется параметр FormatTypeName.

Обязательно?

false

Позиция?

4

Значение по умолчанию

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

-Module <string[]>

Экспортирует только команды из заданных оснасток и модулей Windows PowerShell. Введите имена оснасток и модулей. Подстановочные знаки запрещены.

Дополнительные сведения см. в разделах about_Pssnapins и Import-Module.

Обязательно?

false

Позиция?

named

Значение по умолчанию

All commands in the session.

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

-OutputModule <string>

Задает путь (указывать который не обязательно) и имя модуля, создаваемого командой Export-PSSession. Путь по умолчанию: $home\Documents\WindowsPowerShell\Modules. Это обязательный параметр.

Если подкаталог модуля или любой из файлов, создаваемых командой Export-PSSession, уже существует, команда завершается с ошибкой. Чтобы перезаписать существующие файлы, используйте параметр Force.

Обязательно?

true

Позиция?

2

Значение по умолчанию

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

-Session <PSSession>

Задает сеанс PSSession, из которого экспортируются команды. Введите переменную, содержащую объект сеанса, или команду, получающую объект сеанса, например Get-PSSession. Это обязательный параметр.

Обязательно?

true

Позиция?

1

Значение по умолчанию

нет

Принимать входные данные из конвейера?

false

Принимать подстановочные знаки?

false

<CommonParameters>

Данный командлет поддерживает общие параметры -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer и -OutVariable. Дополнительные сведения см. в разделе about_Commonparameters.

Ввод и вывод

Входным типом является тип объектов, которые можно передавать командлету по конвейеру. Возвращаемым типом является тип объектов, возвращаемых командлетом.

Входные данные

Нет

Объекты невозможно передать командлету Export-PSSession по конвейеру.

Выходные данные

System.IO.FileInfo

Командлет Export-PSSession возвращает список файлов, из которых состоит созданный им модуль.

Примечания

Командлет Export-PSSession использует инфраструктуру удаленного взаимодействия Windows PowerShell. Чтобы использовать этот командлет, компьютер должен быть настроен для удаленного взаимодействия. Дополнительные сведения см. в разделе about_Remote_Requirements.

К помощью командлета Export-PSSession нельзя экспортировать поставщик Windows PowerShell.

Экспортированные команды косвенно выполняются в сеансе PSSession, из которого они экспортированы. Впрочем, все тонкости, связанные с удаленным выполнением команд, полностью обрабатывает Windows PowerShell. Пользователь выполняет экспортированные команды в точности так же, как локальные.

Командлет Export-Module получает сведения о сеансе PSSession и сохраняет их в экспортируемом модуле. Если во время импортирования модуля закрыт сеанс PSSession, из которого экспортированы команды, и на том же компьютере нет активных сеансов PSSession, команды в модуле пытаются воссоздать сеанс PSSession. Если воссоздать сеанс PSSession не удается, экспортированные команды не выполняются.

В сведения о сеансе, получаемые и сохраняемые командлетом Export-Module в модуле, не входят параметры сеанса, в том числе указанные в автоматической переменной $PSSessionOption или с помощью параметров SessionOption для командлетов New-PSSession, Enter-PSSession и Invoke-Command. Если во время импорта модуля исходный сеанс PSSession закрыт, используется другой сеанс PSSession на том же компьютере, если он имеется. Чтобы обеспечить выполнение импортированных команд в правильно настроенном сеансе, создайте сеанс PSSession с нужными параметрами, прежде чем импортировать модуль.

Чтобы найти команды для экспорта, командлет Export-PSSession с помощью командлета Invoke-Command запускает в сеансе PSSession команду Get-Command. Для получения и сохранения данных форматирования для команд используются командлеты Get-FormatData и Export-FormatData. При выполнении команды Export-PSSession могут появляться сообщения об ошибках командлетов Invoke-Command, Get-Command, Get-FormatData и Export-FormatData. Кроме того, командлет Export-PSSession не позволяет экспортировать команды из сеанса, в котором отсутствуют командлеты Get-Command, Get-FormatData, Select-Object и Get-Help.

Командлет Export-PSSession использует для отображения хода выполнения команды командлет Write-Progress. Во время выполнения команды отображается индикатор выполнения.

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

Поскольку профили Windows PowerShell не выполняются в сеансах PSSession, команды, добавляемые в сеанс через профиль, недоступны командлету Export-PSSession. Чтобы экспортировать команды из профиля, необходимо с помощью команды Invoke-Command вручную запустить профиль в сеансе PSSession, прежде чем экспортировать команды.

Модуль, создаваемый командлетом Export-PSSession, может включать файл форматирования, даже если команда не импортирует данные форматирования. Если команда не импортирует данные форматирования, ни один из создаваемых файлов форматирования не будет содержать данных форматирования.

Пример 1

C:\PS>$s = new-pssession -computerName Server01

C:\PS> export-pssession -session $s -outputModule Server01

Описание
-----------
Команда в этом примере экспортирует все команды из сеанса PSSession на компьютере Server01 в модуль Server01 на локальном компьютере, за исключением тех, имена которых совпадают с именами команд в текущем сеансе. Она также экспортирует данные форматирования для команд. 

Первая команда создает на компьютере Server01 сеанс PSSession. Вторая команда экспортирует все команды и данные форматирования из сеанса в модуль Server01.






Пример 2

C:\PS>$s = new-pssession -ConnectionUri http://exchange.microsoft.com/mailbox -credential exchangeadmin01@hotmail.com -authentication negotiate

C:\PS> export-pssession -session $r -module exch* -commandname get-*, set-* -formattypename * -outputModule $pshome\Modules\Exchange -encoding ASCII

Описание
-----------
Эти команды экспортируют команды Get и Set из оснастки Microsoft Exchange Server на удаленном компьютере в модуль Exchange в каталоге $pshome\Modules на локальном компьютере.

Размещение модуля в каталоге $pshome\Module делает его доступным для всех пользователей этого компьютера.






Пример 3

C:\PS>$s = new-pssession -computerName Server01 -credential Server01\User01

C:\PS> export-pssession -session $s -outputModule TestCmdlets -type cmdlet -commandname *test* -formattypename *

C:\PS> remove-pssession $s

C:\PS> import-module TestCmdlets

C:\PS> get-help test*

C:\PS> test-files

Описание
-----------
Эти команды экспортируют командлеты из сеанса PSSession на удаленном компьютере и сохраняют их в модуле на локальном компьютере. Затем они добавляют командлеты из модуля в текущий сеанс, чтобы их можно было использовать.

Первая команда создает сеанс PSSession на компьютере Server01 и сохраняет его в переменной $s.

Вторая команда экспортирует командлеты с именами, начинающимися со слова "Test", из сеанса PSSession в переменной $s в модуль TestCmdlets на локальном компьютере.

Третья команда использует командлет Remove-PSSession для удаления сеанса PSSession в переменной $s из текущего сеанса. Эта команда показывает, что команды, импортированные из сеанса PSSession, можно использовать, даже если этот сеанс неактивен.

Четвертая команда, которую можно выполнить в любой момент в любом сеансе, с помощью командлета Import-Module добавляет в текущий сеанс командлеты из модуля TestCmdlets.

Пятая команда с помощью командлета Get-Help получает справку по командлетам, имена которых начинаются со слова "Test". После добавления команд из модуля в текущий сеанс можно с помощью командлетов Get-Help и Get-Command получать информацию об импортированных командах, как и для любых других команд в сеансе.

Шестая команда использует командлет Test-Files, экспортированный с компьютера Server01 и добавленный в сеанс. 

Хоть это и не очевидно, команда Test-Files на самом деле выполняется в удаленном сеансе на компьютере, с которого она импортирована. Windows PowerShell создает сеанс из информации, сохраненной в модуле.






Пример 4

C:\PS>export-pssession -session $s -AllowClobber -outputModule AllCommands

Описание
-----------
Эта команда экспортирует все команды и данные форматирования из сеанса PSSession в переменной $s в текущий сеанс. В команде указан параметр AllowClobber, разрешающий экспорт команд, имена которых совпадают с именами команд в текущем сеансе.






Пример 5

C:\PS>$options = New-PSSessionOption -NoMachineProfile

C:\PS> $s = new-pssession -computername Server01 -sessionoption $options

C:\PS> export-pssession -session $s -outputModule Server01

C:\PS> remove-pssession $s

C:\PS> new-pssession -computername Server01 -sessionoption $options

C:\PS> import-module Server01

Описание
-----------
В этом примере показано, как выполнить экспортированные команды в сеансе с определенными параметрами, если сеанс PSSession, из которого они экспортированы, закрыт.

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

Если в текущем сеансе отсутствует сеанс удаленного взаимодействия с исходным компьютером, содержащиеся в этом модуле команды заново устанавливают такой сеанс. Впрочем, командлет Export-PSSession не сохраняет в модуле специальные параметры, например задаваемые параметром SessionOption командлета New-PSSession. 

Поэтому если требуется выполнить экспортированные команды в удаленном сеансе с определенными параметрами, необходимо создать удаленный сеанс с нужными параметрами, прежде чем импортировать модуль.

Первая команда с помощью командлета New-PSSessionOption создает объект PSSessionOption и сохраняет его в переменной $options.

Вторая команда создает сеанс PSSession с указанными параметрами. В ней используется командлет New-PSSession для создания сеанса PSSession на компьютере Server01. С помощью параметра SessionOption указывается объект параметров, сохраненный в переменной $options. 

Третья команда с помощью командлета Export-PSSession экспортирует команды из сеанса PSSession, сохраненного в переменной $s, в модуль Server01.

Четвертая команда использует командлет Remove-PSSession для удаления сеанса PSSession, сохраненного в переменной $s.

Пятая команда с помощью командлета New-PSSession создает новый сеанс PSSession, подключенный к компьютеру Server01. Этот сеанс PSSession также использует параметры, сохраненные в переменной $options.

Шестая команда импортирует команды из модуля Server01 с помощью командлета Import-Module. Команды, содержащиеся в этом модуле, выполняются в сеансе PSSession на компьютере Server01.






См. также