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
командлет на диске Certificate (Cert:). Если сертификат недопустимый или не имеет достаточных полномочий, команда завершается ошибкой.
Type: | X509Certificate2 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-CommandName
Экспортирует только команды с указанными именами или шаблонами имен. Разрешено использовать подстановочные знаки. Используйте CommandName или его псевдоним Name.
По умолчанию экспортирует все команды из 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
: использует кодировку для кодировки 7-разрядной кодировки ASCII.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 также разрешает числовые идентификаторы зарегистрированных кодовых страниц (например -Encoding 1251
, ) или строковые имена зарегистрированных кодовых страниц (например -Encoding "windows-1251"
, ). Дополнительные сведения см. в документации по .NET для Encoding.CodePage.
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
Задает модули с именами, указанными в виде объектов ModuleSpecification . См. раздел Примечания в конструкторе ModuleSpecification (хэш-таблицы).
Например, параметр FullyQualifiedModule принимает имя модуля, указанное в любом из следующих форматов:
@{ModuleName = "modulename"; ModuleVersion = "version_number"}
@{ModuleName = "modulename"; ModuleVersion = "version_number"; Guid = "GUID"}
Параметры ModuleName и ModuleVersion обязательны, а Guid — нет. Параметр FullyQualifiedModule нельзя указать в той же команде, что и параметр Module . эти два параметра являются взаимоисключающими.
Type: | ModuleSpecification[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Module
Экспортирует только команды в указанных оснастках и модулях PowerShell. Введите имена оснасток и модулей. Использовать подстановочные знаки запрещено.
Дополнительные сведения см. в разделе Import-Module
и about_PSSnapins.
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
.
Выходные данные
Export-PSSession
возвращает список файлов, составляющих созданный модуль.
Примечания
Export-PSSession
использует инфраструктуру удаленного взаимодействия PowerShell. Для использования этого командлета компьютер должен быть настроен для удаленного взаимодействия. Дополнительные сведения см. в разделе about_Remote_Requirements.
Нельзя использовать для Export-PSSession
экспорта поставщика PowerShell.
Экспортируемые команды выполняются неявно в сеансе PSSession, из которого они были экспортированы. Сведения о удаленном выполнении команд полностью обрабатываются PowerShell. Экспортируемые команды можно выполнять так же, как и локальные.
Export-ModuleMember
записывает и сохраняет сведения о PSSession в экспортируемом модуле. Если psSession, из которого были экспортированы команды, закрывается при импорте модуля и на том же компьютере нет активных PSSession, команды в модуле пытаются воссоздать 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
может содержать файл форматирования, даже если команда не импортирует данные форматирования. Если команда не импортирует данные форматирования, все создаваемые файлы форматирования не будут содержать данные форматирования.