Поделиться через


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 в , введите $SExport-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.

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

FileInfo

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

Примечания

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

Нельзя использовать для Export-PSSession экспорта поставщика PowerShell.

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

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

Сведения о сеансе, которые Export-ModuleMember записываются и сохраняются в модуле, не включают параметры сеанса, такие как указанные в $PSSessionOption переменной предпочтения или с помощью параметра New-PSSessionSessionOption командлетов , 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-PSSessionWrite-Progress использует командлет для отображения хода выполнения команды. Во время выполнения команды может отображаться индикатор выполнения .

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

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

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