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
Значением может быть имя модуля, полная спецификация модуля или путь к файлу модуля.
Если значением является путь, путь может быть полным или относительным. Относительный путь разрешается относительно скрипта, содержащего оператор using.
Если значением является имя или спецификация модуля, PowerShell выполняет поиск указанного модуля в PSModulePath .
Спецификация модуля — это хэш-таблице со следующими ключами.
ModuleName
- Обязательно Указывает имя модуля.GUID
- Дополнительные Указывает GUID модуля.- Кроме того, необходимо указать по крайней мере один из трех приведенных ниже ключей.
ModuleVersion
— задает минимальную допустимую версию модуля.MaximumVersion
— задает максимально допустимую версию модуля.RequiredVersion
— указывает точную требуемую версию модуля. Его нельзя использовать с другими ключами версии.
Вы не можете указать параметр 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
использует инфраструктуру удаленного взаимодействия 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
может содержать файл форматирования, даже если команда не импортирует данные форматирования. Если команда не импортирует данные форматирования, все создаваемые файлы форматирования не будут содержать данные форматирования.