Export-PSSession
Экспортирует команды из другого сеанса и сохраняет их в модуле PowerShell.
Синтаксис
Export-PSSession
[-Session] <PSSession>
[-OutputModule] <string>
[[-CommandName] <string[]>]
[[-FormatTypeName] <string[]>]
[-Force]
[-Encoding <string>]
[-AllowClobber]
[-ArgumentList <Object[]>]
[-CommandType <CommandTypes>]
[-Module <string[]>]
[-FullyQualifiedModule <ModuleSpecification[]>]
[-Certificate <X509Certificate2>]
[<CommonParameters>]
Описание
Командлет Export-PSSession
получает командлеты, функции, псевдонимы и другие типы команд из другого сеанса PowerShell (PSSession) на локальном или удаленном компьютере и сохраняет их в модуле PowerShell. Чтобы добавить команды из модуля в текущий сеанс, используйте командлет Import-Module
.
В отличие от Import-PSSession
, которая импортирует команды из другого psSession в текущий сеанс, Export-PSSession
сохраняет команды в модуле. Команды не импортируются в текущий сеанс.
Чтобы экспортировать команды, используйте командлет New-PSSession
для создания PSSession с командами, которые необходимо экспортировать. Затем используйте командлет Export-PSSession
для экспорта команд.
Чтобы предотвратить конфликты имен команд, по умолчанию для Export-PSSession
необходимо экспортировать все команды, кроме команд, которые существуют в текущем сеансе. Чтобы указать команды для экспорта, можно использовать параметр CommandName.
Командлет Export-PSSession
использует неявную функцию удаленного взаимодействия PowerShell. При импорте команд в текущий сеанс они выполняются неявно в исходном сеансе или в аналогичном сеансе на исходном компьютере.
Примеры
Пример 1. Экспорт команд из PSSession
В этом примере создается новая среда PSSession с локального компьютера на компьютер Server01. Все команды, кроме тех, которые существуют в текущем сеансе, экспортируются в модуль с именем Server01 на локальном компьютере. Экспорт включает данные форматирования для команд.
$S = New-PSSession -ComputerName Server01
Export-PSSession -Session $S -OutputModule Server01
Команда New-PSSession
создает PSSession на компьютере Server01. PsSession хранится в переменной $S
. Команда Export-PSSession
экспортирует команды переменной $S
и форматирование данных в модуль Server01.
Пример 2. Экспорт команд Get и Set
В этом примере экспортируются все команды Get
и Set
с сервера.
$S = New-PSSession -ConnectionUri https://exchange.microsoft.com/mailbox -Credential exchangeadmin01@hotmail.com -Authentication Negotiate
Export-PSSession -Session $S -Module exch* -CommandName Get-*, Set-* -FormatTypeName * -OutputModule $PSHOME\Modules\Exchange -Encoding ASCII
Эти команды экспортируют команды Get
и Set
из оснастки Microsoft Exchange Server на удаленном компьютере в модуль Exchange в каталоге $PSHOME\Modules
на локальном компьютере.
Размещение модуля в каталоге $PSHOME\Modules
делает его доступным для всех пользователей компьютера.
Пример 3. Экспорт команд с удаленного компьютера
Этот пример экспортирует командлеты из PSSession на удаленном компьютере и сохраняет их в модуле на локальном компьютере. Командлеты из модуля добавляются в текущий сеанс, чтобы их можно было использовать.
$S = New-PSSession -ComputerName Server01 -Credential Server01\User01
Export-PSSession -Session $S -OutputModule TestCmdlets -Type Cmdlet -CommandName *test* -FormatTypeName *
Remove-PSSession $S
Import-Module TestCmdlets
Get-Help Test*
Test-Files
Команда New-PSSession
создает psSession на компьютере Server01 и сохраняет его в переменной $S
. Команда Export-PSSession
экспортирует командлеты, имена которых начинаются с теста из PSSession в $S
в модуль TestCmdlets на локальном компьютере.
Командлет Remove-PSSession
удаляет psSession в $S
из текущего сеанса. Эта команда показывает, что psSession не нужно использовать команды, импортированные из сеанса. Командлет Import-Module
добавляет командлеты в модуль TestCmdlets в текущий сеанс. Команда может выполняться в любой сеанс в любое время.
Командлет Get-Help
получает справку для командлетов, имена которых начинаются с test. После добавления команд в модуль в текущий сеанс можно использовать командлеты Get-Help
и Get-Command
, чтобы узнать об импортированных командах. Командлет Test-Files
был экспортирован с компьютера Server01 и добавлен в сеанс. Командлет Test-Files
выполняется в удаленном сеансе на компьютере, с которого была импортирована команда. PowerShell создает сеанс из сведений, хранящихся в модуле TestCmdlets.
Пример 4. Экспорт и команды clobber в текущем сеансе
В этом примере экспортируются команды, хранящиеся в переменной, в текущий сеанс.
Export-PSSession -Session $S -AllowClobber -OutputModule AllCommands
Эта команда Export-PSSession
экспортирует все команды и все данные форматирования из PSSession в переменной $S
в текущий сеанс. Параметр AllowClobber включает команды с теми же именами, что и команды в текущем сеансе.
Пример 5. Экспорт команд из закрытого PSSession
В этом примере показано, как выполнять экспортированные команды с особыми параметрами при закрытии PSSession, создавшего экспортированные команды.
Если исходный удаленный сеанс закрыт при импорте модуля, модуль будет использовать любой открытый удаленный сеанс, который подключается к исходному компьютеру. Если на исходном компьютере нет текущего сеанса, модуль повторно развернет сеанс.
Чтобы выполнить экспортированные команды с специальными параметрами в удаленном сеансе, необходимо создать удаленный сеанс с этими параметрами перед импортом модуля. Используйте командлет New-PSSession
с параметром SessionOption
$Options = New-PSSessionOption -NoMachineProfile
$S = New-PSSession -ComputerName Server01 -SessionOption $Options
Export-PSSession -Session $S -OutputModule Server01
Remove-PSSession $S
New-PSSession -ComputerName Server01 -SessionOption $Options
Import-Module Server01
Командлет New-PSSessionOption
создает объект PSSessionOption и сохраняет объект в переменной $Options
. Команда New-PSSession
создает PSSession на компьютере Server01.
Параметр сеанса использует объект, хранящийся в $Options
. Сеанс хранится в переменной $S
.
Командлет Export-PSSession
экспортирует команды из PSSession в $S
в модуль Server01.
Командлет Remove-PSSession
удаляет psSession в переменной $S
.
Командлет New-PSSession
создает новый интерфейс PSSession, который подключается к компьютеру Server01. Параметр сеанса использует объект, хранящийся в $Options
. Командлет Import-Module
импортирует команды из модуля Server01. Команды в модуле выполняются в PSSession на компьютере Server01.
Параметры
-AllowClobber
Экспортирует указанные команды, даже если они имеют те же имена, что и команды в текущем сеансе.
При экспорте команды с тем же именем, что и команда в текущем сеансе, экспортируемая команда скрывает или заменяет исходные команды. Дополнительные сведения см. в разделе about_Command_Precedence.
Тип: | SwitchParameter |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-ArgumentList
Экспортирует вариант команды, которая приводит к использованию указанных аргументов (значений параметров).
Например, чтобы экспортировать вариант команды Get-Item
в диске сертификата (Cert:) в psSession в $S
, введите Export-PSSession -Session $S -Command Get-Item -ArgumentList cert:
.
Тип: | Object[] |
Aliases: | Args |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Certificate
Указывает сертификат клиента, используемый для подписи файлов формата (*). Format.ps1xml) или файлы модулей скрипта (PSM1) в модуле, который Export-PSSession
создает. Введите переменную, содержащую сертификат или команду или выражение, которое получает сертификат.
Чтобы найти сертификат, используйте командлет Get-PfxCertificate
или используйте командлет Get-ChildItem
на диске Сертификата (Cert:). Если сертификат недопустим или не имеет достаточного центра, команда завершается ошибкой.
Тип: | X509Certificate2 |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-CommandName
Экспортирует только команды с указанными именами или шаблонами имен. Разрешены подстановочные знаки. Используйте CommandName или его псевдоним, Имя.
По умолчанию Export-PSSession
экспортирует все команды из PSSession, кроме команд с теми же именами, что и команды в текущем сеансе. Это предотвращает скрытие или замена команд в текущем сеансе. Чтобы экспортировать все команды, даже те, которые скрывают или заменяют другие команды, используйте параметр AllowClobber.
Если вы используете параметр CommandName, файлы форматирования для команд не экспортируются, если только вы не используете параметр FormatTypeName. Аналогичным образом, если вы используете параметр FormatTypeName, никакие команды не экспортируются, если вы не используете параметр commandName .
Тип: | String[] |
Aliases: | Name |
Position: | 2 |
Default value: | All commands in the session. |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | True |
-CommandType
Экспортирует только указанные типы объектов команд. Используйте CommandType или его псевдоним, type.
Допустимые значения для этого параметра приведены следующим образом:
-
Alias
: все псевдонимы PowerShell в текущем сеансе. -
All
: все типы команд. Это эквивалентGet-Command -Name *
. -
Application
: все файлы, отличные от файлов PowerShell в путях, перечисленных в переменной среды Path ($env:path
), включая .txt, .exeи .dll файлы. -
Cmdlet
: командлеты в текущем сеансе. Командлет по умолчанию. -
Configuration
: конфигурация PowerShell. Дополнительные сведения см. в about_Session_Configurations. -
ExternalScript
: все .ps1 файлы в путях, перечисленных в переменной среды Path ($env:path
). -
Filter
иFunction
: все функции PowerShell. -
Script
блоки скриптов в текущем сеансе. -
Workflow
рабочий процесс PowerShell. Дополнительные сведения см. в about_Workflows.
Эти значения определяются как перечисление на основе флага. Можно объединить несколько значений, чтобы задать несколько флагов с помощью этого параметра. Значения можно передать в параметр commandType в виде массива значений или в виде строки, разделенной запятыми этих значений. Командлет объединяет значения с помощью операции binary-OR. Передача значений в виде массива является самым простым параметром, а также позволяет использовать завершение табуляции для значений.
Тип: | CommandTypes |
Aliases: | Type |
Допустимые значения: | Alias, All, Application, Cmdlet, Configuration, ExternalScript, Filter, Function, Script, Workflow |
Position: | Named |
Default value: | All commands in the session. |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Encoding
Указывает тип кодирования для целевого файла. Значение по умолчанию — UTF8
.
Допустимые значения для этого параметра приведены следующим образом:
-
ASCII
: использует набор символов ASCII (7-разрядная версия). -
BigEndianUnicode
: использует UTF-16 с порядком байтов большого плана. -
Default
; Использует кодировку, соответствующую активной кодовой странице системы. -
OEM
: использует кодировку, соответствующую текущей кодовой странице OEM системы. -
Unicode
: использует UTF-16 с маленьким порядком байтов. -
UTF7
: использует UTF-7. -
UTF8
: использует UTF-8. -
UTF32
: использует UTF-32 с маленьким порядком байтов.
Тип: | String |
Допустимые значения: | ASCII, BigEndianUnicode, Default, OEM, Unicode, UTF7, UTF8, UTF32 |
Position: | Named |
Default value: | UTF8 |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Force
Перезаписывает один или несколько существующих выходных файлов, даже если файл имеет атрибут только для чтения.
Тип: | SwitchParameter |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-FormatTypeName
Экспортирует инструкции форматирования только для указанных типов Microsoft .NET Framework. Введите имена типов. По умолчанию Export-PSSession
экспортирует инструкции по форматированию для всех типов .NET Framework, которые не находятся в пространстве имен System.Management.Automation.
Значение этого параметра должно быть именем типа, возвращаемого командой Get-FormatData
в сеансе, из которого импортируются команды. Чтобы получить все данные форматирования в удаленном сеансе, введите *
.
Если вы используете параметр FormatTypeName, команды не экспортируются, если вы не используете параметр commandName .
Если вы используете параметр CommandName, файлы форматирования для команд не экспортируются, если только вы не используете параметр FormatTypeName.
Тип: | String[] |
Position: | 3 |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-FullyQualifiedModule
Это значение может быть именем модуля, полной спецификацией модуля или путем к файлу модуля.
Если значение является путем, путь может быть полностью или относительным. Относительный путь разрешается относительно скрипта, содержащего инструкцию using.
Если значение является спецификацией имени или модуля, PowerShell выполняет поиск PSModulePath для указанного модуля.
Спецификация модуля — это хэш-файл, имеющий следующие ключи.
-
ModuleName
- Обязательный Указывает имя модуля. -
GUID
- Необязательный указывает GUID модуля. - Это также Обязательный, чтобы указать хотя бы один из трех приведенных ниже ключей.
-
ModuleVersion
. Указывает минимальную допустимую версию модуля. -
MaximumVersion
. Указывает максимальную допустимую версию модуля. -
RequiredVersion
. Указывает точную, требуемую версию модуля. Это нельзя использовать с другими ключами версии.
-
Параметр FullyQualifiedModule нельзя указать в той же команде, что и параметр module. два параметра являются взаимоисключающими.
Тип: | ModuleSpecification[] |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Module
Экспортирует только команды в указанных оснастках и модулях PowerShell. Введите имена оснастки и модулей. Подстановочные знаки запрещены.
Дополнительные сведения см. в разделе Import-Module
и about_PSSnapins.
Тип: | String[] |
Aliases: | PSSnapin |
Position: | Named |
Default value: | All commands in the session. |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-OutputModule
Указывает необязательный путь и имя модуля, созданного Export-PSSession
. Путь по умолчанию — $HOME\Documents\WindowsPowerShell\Modules
. Этот параметр является обязательным.
Если подкаталог модуля или любой из файлов, которые Export-PSSession
создает, уже существует, команда завершается ошибкой. Чтобы перезаписать существующие файлы, используйте параметр force.
Тип: | String |
Aliases: | PSPath, ModuleName |
Position: | 1 |
Default value: | $HOME\Documents\WindowsPowerShell\Modules |
Обязательно: | True |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Session
Указывает PSSession, из которого экспортируются команды. Введите переменную, содержащую объект сеанса или команду, которая получает объект сеанса, например команду Get-PSSession
. Этот параметр является обязательным.
Тип: | PSSession |
Position: | 0 |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
Входные данные
None
Невозможно передать объекты в этот командлет.
Выходные данные
Этот командлет возвращает список файлов, составляющих созданный модуль.
Примечания
Windows PowerShell включает следующие псевдонимы для Export-PSSession
:
epsn
Export-PSSession
использует инфраструктуру удаленного взаимодействия PowerShell. Чтобы использовать этот командлет, компьютер должен быть настроен для удаленного взаимодействия. Дополнительные сведения см. в about_Remote_Requirements.
Нельзя использовать Export-PSSession
для экспорта поставщика PowerShell.
Экспортированные команды выполняются неявно в PSSession, из которого они были экспортированы. Сведения о удаленном выполнении команд обрабатываются PowerShell полностью. Экспортированные команды можно выполнять так же, как и локальные команды.
Export-ModuleMember
записывает и сохраняет сведения о PSSession в модуле, экспортируемом им. Если psSession, из которого экспортируются команды, закрываются при импорте модуля и не существует активных PSSessions на тот же компьютер, команды в модуле пытаются воссоздать PSSession. Если попытка повторно создать psSession завершается ошибкой, экспортированные команды не будут выполняться.
Сведения о сеансе, которые Export-ModuleMember
фиксируют и сохраняются в модуле, не включают параметры сеанса, такие как указанные в переменной предпочтения $PSSessionOption
или с помощью параметра SessionOption командлетов New-PSSession
, Enter-PSSession
или Invoke-Command
. Если исходный PSSession закрыт при импорте модуля, модуль будет использовать другой PSSession на том же компьютере, если он доступен. Чтобы включить импортированные команды для выполнения в правильно настроенном сеансе, создайте PSSession с параметрами, которые необходимо выполнить перед импортом модуля.
Чтобы найти команды для экспорта, Export-PSSession
использует командлет Invoke-Command
для выполнения команды Get-Command
в PSSession. Для получения и сохранения данных форматирования для команд используется командлеты 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
для отображения хода выполнения команды. Во время выполнения команды может появиться индикатор хода выполнения.
Экспортированные команды имеют те же ограничения, что и другие удаленные команды, включая неспособность запустить программу с пользовательским интерфейсом, например Блокнот.
Так как профили PowerShell не выполняются в PSSessions, команды, добавляемые в сеанс, недоступны для Export-PSSession
. Чтобы экспортировать команды из профиля, используйте команду Invoke-Command
для запуска профиля в PSSession вручную перед экспортом команд.
Модуль, который Export-PSSession
создает, может включать файл форматирования, даже если команда не импортирует данные форматирования. Если команда не импортирует данные форматирования, все созданные файлы форматирования не будут содержать данные форматирования.
Связанные ссылки
PowerShell