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