Export-PSSession
Экспортирует команды из другого сеанса и сохраняет их в модуле PowerShell.
Синтаксис
Export-PSSession
[-OutputModule] <String>
[-Force]
[-Encoding <Encoding>]
[[-CommandName] <String[]>]
[-AllowClobber]
[-ArgumentList <Object[]>]
[-CommandType <CommandTypes>]
[-Module <String[]>]
[-FullyQualifiedModule <ModuleSpecification[]>]
[[-FormatTypeName] <String[]>]
[-Certificate <X509Certificate2>]
[-Session] <PSSession>
[<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
экспортирует командлеты, имена которых начинаются с test из 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.
Параметр SessionOption использует объект, хранящийся в $Options
. Сеанс хранится в переменной $S
.
Командлет Export-PSSession
экспортирует команды из PSSession в $S
модуль Server01.
Командлет Remove-PSSession
удаляет PSSession в переменной $S
.
Командлет New-PSSession
создает новую psSession, которая подключается к компьютеру Server01. Параметр SessionOption использует объект, хранящийся в $Options
. Командлет Import-Module
импортирует команды из модуля Server01. Команды в модуле выполняются в PSSession на компьютере Server01.
Параметры
-AllowClobber
Экспортирует указанные команды, даже если их имена совпадают с именами команд в текущем сеансе.
При экспорте команды с тем же именем, что и команда в текущем сеансе, экспортируемая команда скрывает или заменяет исходные команды. Дополнительные сведения см. в разделе about_Command_Precedence.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ArgumentList
Экспортирует вариант команды, полученный с использованием заданных аргументов (значений параметров).
Например, чтобы экспортировать вариант Get-Item
команды в диске сертификата (Cert:) в psSession в $S
типе Export-PSSession -Session $S -Command Get-Item -ArgumentList cert:
.
Type: | Object[] |
Aliases: | Args |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Certificate
Указывает сертификат клиента, используемый для подписи файлов формата (*). Format.ps1xml) или файлы модулей скрипта (PSM1) в модуле, который Export-PSSession
создает. Введите переменную, которая содержит сертификат, или команду или выражение, которое возвращает сертификат.
Чтобы найти сертификат, используйте командлет или используйте Get-PfxCertificate
Get-ChildItem
командлет на диске Сертификата (Cert:). Если сертификат недопустимый или не имеет достаточных полномочий, команда завершается ошибкой.
Type: | X509Certificate2 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-CommandName
Экспортирует только команды с указанными именами или шаблонами имен. Разрешено использовать подстановочные знаки. Используйте CommandName или его псевдоним, имя.
По умолчанию экспортирует все команды из PSSession, Export-PSSession
кроме команд с теми же именами, что и команды в текущем сеансе. Это предотвращает скрытие или замена команд в текущем сеансе. Чтобы экспортировать все команды, даже те, которые скрывают или заменяют другие команды, используйте параметр AllowClobber .
Если вы используете параметр CommandName , файлы форматирования для команд не экспортируются, если только вы не используете параметр FormatTypeName . Аналогичным образом, если вы используете параметр FormatTypeName , команды не экспортируются, если вы не используете параметр CommandName .
Type: | String[] |
Aliases: | Name |
Position: | 2 |
Default value: | All commands in the session. |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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. Передача значений в виде массива является самым простым параметром, а также позволяет использовать завершение табуляции для значений.
Type: | CommandTypes |
Aliases: | Type |
Accepted values: | Alias, All, Application, Cmdlet, Configuration, ExternalScript, Filter, Function, Script, Workflow |
Position: | Named |
Default value: | All commands in the session. |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Encoding
Указывает тип кодировки для целевого файла. Значение по умолчанию — utf8NoBOM
.
Допустимые значения для этого параметра приведены следующим образом:
ascii
: использует кодировку для набора символов ASCII (7-разрядная версия).ansi
: использует кодировку для кодовой страницы ANSI текущего языка и региональных параметров. Этот параметр добавлен в PowerShell 7.4.bigendianunicode
: кодирует в формате UTF-16 с помощью порядка байтов больших байтов.bigendianutf32
: кодирует в формате UTF-32 с помощью порядка байтов больших байтов.oem
: использует кодировку по умолчанию для программ MS-DOS и консольных программ.unicode
: кодирует в формате UTF-16 с помощью байтового порядка байтов.utf7
: кодирует в формате UTF-7.utf8
: кодирует в формате UTF-8.utf8BOM
: кодирует в формате UTF-8 с меткой порядка байтов (BOM)utf8NoBOM
: кодирует в формате UTF-8 без метки порядка байтов (BOM)utf32
: кодирует в формате UTF-32.
Начиная с PowerShell 6.2, параметр кодирования также позволяет числовым идентификаторам зарегистрированных кодовых страниц (например) или строковым именам зарегистрированных кодовых страниц (например-Encoding "windows-1251"
-Encoding 1251
). Дополнительные сведения см. в документации по .NET для Encoding.CodePage.
Начиная с PowerShell 7.4, можно использовать Ansi
значение параметра кодировки для передачи числового идентификатора для кодовой страницы ANSI текущего языка и региональных параметров без необходимости указывать его вручную.
Примечание.
UTF-7* больше не рекомендуется использовать. По состоянию на PowerShell 7.1 предупреждение записывается при указании utf7
параметра кодирования .
Type: | Encoding |
Accepted values: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
Position: | Named |
Default value: | UTF8NoBOM |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Force
Перезаписывает один или несколько существующих выходных файлов, даже если для них задан атрибут "Только для чтения".
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-FormatTypeName
Экспортирует инструкции форматирования только для указанных типов Microsoft .NET Framework. Введите имена типов. По умолчанию экспортирует инструкции по форматированию Export-PSSession
для всех типов платформа .NET Framework, которые не находятся в пространстве имен System.Management.Automation.
Значение этого параметра должно быть именем типа, возвращаемого командой Get-FormatData
в сеансе, из которого импортируются команды. Чтобы получить все данные форматирования в удаленном сеансе, введите *
.
Если вы используете параметр FormatTypeName , команды не экспортируются, если вы не используете параметр CommandName .
Если вы используете параметр CommandName , файлы форматирования для команд не экспортируются, если только вы не используете параметр FormatTypeName .
Type: | String[] |
Position: | 3 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-FullyQualifiedModule
Это значение может быть именем модуля, полной спецификацией модуля или путем к файлу модуля.
Если значение является путем, путь может быть полностью или относительным. Относительный путь разрешается относительно скрипта, содержащего инструкцию using.
Если значение является спецификацией имени или модуля, PowerShell выполняет поиск в PSModulePath для указанного модуля.
Спецификация модуля — это хэш-файл, имеющий следующие ключи.
ModuleName
- Обязательный указывает имя модуля.GUID
- Необязательный атрибут указывает GUID модуля.- Также требуется указать по крайней мере один из трех приведенных ниже ключей.
ModuleVersion
— задает минимальную допустимую версию модуля.MaximumVersion
— задает максимальную допустимую версию модуля.RequiredVersion
— указывает точную, требуемую версию модуля. Это нельзя использовать с другими ключами версии.
Невозможно указать параметр ПолностьюQualifiedModule в той же команде, что и параметр module . два параметра являются взаимоисключающими.
Type: | ModuleSpecification[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Module
Экспортирует только команды в указанных оснастках и модулях PowerShell. Введите имена оснасток и модулей. Использовать подстановочные знаки запрещено.
Дополнительные сведения см. в about_PSSnapins Import-Module
.
Type: | String[] |
Aliases: | PSSnapin |
Position: | Named |
Default value: | All commands in the session. |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-OutputModule
Указывает необязательный путь и имя модуля, созданного Export-PSSession
. По умолчанию используется путь $HOME\Documents\WindowsPowerShell\Modules
. Этот параметр является обязательным.
Если подкаталог модуля или любой из файлов, создающих Export-PSSession
уже существующие, команда завершается ошибкой. Чтобы перезаписать существующие файлы, используйте параметр Force .
Type: | String |
Aliases: | PSPath, ModuleName |
Position: | 1 |
Default value: | $HOME\Documents\WindowsPowerShell\Modules |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Session
Указывает сеанс PSSession, из которого экспортируются команды. Введите переменную, содержащую объект сеанса или команду, которая получает объект сеанса, например Get-PSSession
команду. Этот параметр является обязательным.
Type: | PSSession |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Входные данные
None
Невозможно передать объекты в этот командлет.
Выходные данные
Этот командлет возвращает список файлов, составляющих созданный модуль.
Примечания
Export-PSSession
использует инфраструктуру удаленного взаимодействия PowerShell. Для использования этого командлета компьютер должен быть настроен для удаленного взаимодействия. Дополнительные сведения см. в about_Remote_Requirements.
Нельзя использовать Export-PSSession
для экспорта поставщика PowerShell.
Экспортируемые команды выполняются неявно в сеансе PSSession, из которого они были экспортированы. Сведения о удаленном выполнении команд обрабатываются PowerShell полностью. Экспортируемые команды можно выполнять так же, как и локальные.
Export-ModuleMember
записывает и сохраняет сведения о PSSession в модуле, который он экспортирует. Если psSession, из которого экспортируются команды, закрываются при импорте модуля и не существует активных PSSessions на тот же компьютер, команды в модуле пытаются воссоздать PSSession. Если попытка повторно создать psSession завершается ошибкой, экспортированные команды не будут выполняться.
Сведения о сеансе, которые Export-ModuleMember
записывают и сохраняются в модуле, не включают параметры сеанса, такие как указанные в $PSSessionOption
переменной предпочтения или с помощью параметра New-PSSession
SessionOption для командлетов Enter-PSSession
или Invoke-Command
командлетов. Если при импорте модуля исходный сеанс PSSession закрыт, модуль будет использовать другой сеанс PSSession на том же компьютере, если такой доступен. Чтобы импортированные команды могли выполняться в правильно настроенном сеансе, создайте сеанс PSSession с нужными параметрами перед импортом модуля.
Чтобы найти команды для экспорта, Export-PSSession
использует Invoke-Command
командлет для выполнения Get-Command
команды в PSSession. Для получения и сохранения данных форматирования для команд используется Get-FormatData
и Export-FormatData
командлеты. При выполнении команды могут отображаться сообщения об ошибках из Invoke-Command
, Get-Command
Get-FormatData
и Export-FormatData
при выполнении Export-PSSession
команды. Кроме того, Export-PSSession
нельзя экспортировать команды из сеанса, включающего Get-Command
Get-FormatData
командлеты , Select-Object
и Get-Help
командлеты.
Export-PSSession
Write-Progress
использует командлет для отображения хода выполнения команды. Во время выполнения команды может отображаться индикатор выполнения .
К экспортированным командам применяются те же ограничения, что и к другим удаленным командам, включая невозможность запустить программу с пользовательским интерфейсом, например Блокнот.
Так как профили PowerShell не выполняются в PSSessions, команды, добавляемые в сеанс, недоступны Export-PSSession
. Чтобы экспортировать команды из профиля, используйте Invoke-Command
команду для запуска профиля в PSSession вручную перед экспортом команд.
Создаваемый модуль Export-PSSession
может включать файл форматирования, даже если команда не импортирует данные форматирования. Если команда не импортирует данные форматирования, все создаваемые файлы форматирования не будут содержать данные форматирования.
Связанные ссылки
PowerShell
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по