Import-PSSession
Импортирует команды из другого сеанса в текущий.
Синтаксис
Import-PSSession
[-Prefix <String>]
[-DisableNameChecking]
[[-CommandName] <String[]>]
[-AllowClobber]
[-ArgumentList <Object[]>]
[-CommandType <CommandTypes>]
[-Module <String[]>]
[-FullyQualifiedModule <ModuleSpecification[]>]
[[-FormatTypeName] <String[]>]
[-Certificate <X509Certificate2>]
[-Session] <PSSession>
[<CommonParameters>]
Описание
Командлет Import-PSSession
импортирует команды , такие как командлеты, функции и псевдонимы, из PSSession на локальном или удаленном компьютере в текущий сеанс. Вы можете импортировать любую команду, которую Get-Command
командлет может найти в PSSession.
Import-PSSession
Используйте команду для импорта команд из настраиваемой оболочки, например оболочки Microsoft Exchange Server, или из сеанса, включающего Windows PowerShell модули и оснастки или другие элементы, которые не находятся в текущем сеансе.
Чтобы импортировать команды, сначала используйте New-PSSession
командлет для создания PSSession. Затем используйте командлет для Import-PSSession
импорта команд. По умолчанию импортирует все команды, Import-PSSession
кроме команд, имена которых совпадают с именами команд в текущем сеансе. Чтобы импортировать все команды, используйте параметр AllowClobber.
Импортированные команды можно использовать точно так же, как и любую команду в сеансе. При использовании импортированных команд импортированная часть команды выполняется неявно в сеансе, из которой она была импортирована. Однако удаленные операции полностью обрабатываются Windows PowerShell. Вам даже не нужно помнить о них, за исключением того, что нужно поддерживать подключение к другому сеансу (PSSession) открытым. Если его закрыть, импортированные команды перестают быть недоступными.
Так как выполнение импортированных команд может занять больше времени, чем локальные команды, Import-PSSession
добавляет параметр AsJob к каждой импортированной команде. Этот параметр позволяет выполнить команду в качестве фонового задания Windows PowerShell. См. дополнительные сведения о заданиях.
При использовании Import-PSSession
Windows PowerShell добавляет импортированные команды во временный модуль, который существует только в сеансе, и возвращает объект, представляющий модуль. Чтобы создать постоянный модуль, который можно использовать в будущих сеансах, используйте Export-PSSession
командлет .
Командлет Import-PSSession
использует функцию неявного удаленного взаимодействия Windows PowerShell. При импорте команд в текущий сеанс они выполняются неявно в исходном сеансе или в аналогичном сеансе на исходном компьютере.
Начиная с Windows PowerShell 3.0, можно использовать Import-Module
командлет для импорта модулей из удаленного сеанса в текущий сеанс. Эта функция использует неявное удаленное взаимодействие. Это эквивалентно использованию Import-PSSession
для импорта выбранных модулей из удаленного сеанса в текущий сеанс.
Примеры
Пример 1. Импорт всех команд из PSSession
$S = New-PSSession -ComputerName Server01
Import-PSSession -Session $S
Эта команда импортирует все команды из PSSession на компьютере Server01 в текущий сеанс, за исключением команд, которые имеют такие же имена, как и команды в текущем сеансе.
Поскольку эта команда не использует параметр CommandName, она также импортирует все необходимые для импортированных команд данные форматирования.
Пример 2. Импорт команд, заканчивающихся определенной строкой
$S = New-PSSession https://ps.testlabs.com/powershell
Import-PSSession -Session $S -CommandName *-test -FormatTypeName *
New-Test -Name Test1
Get-Test test1 | Run-Test
Эти команды импортируют команды, имена которых заканчиваются на "-test", из PSSession в локальный сеанс, а затем показывают, как использовать импортированный командлет.
Первая команда использует New-PSSession
командлет для создания PSSession. Он сохраняет PSSession в переменной $S
.
Вторая команда использует Import-PSSession
командлет для импорта команд из PSSession в $S
в текущий сеанс. Она использует параметр CommandName, чтобы указать команды с существительным Test, и параметр FormatTypeName, чтобы импортировать данные форматирования для команд Test.
Третья и четвертая команды используют импортированные команды в текущем сеансе. Поскольку импортированные команды фактически добавляются в текущий сеанс, для их выполнения используется локальный синтаксис. Для выполнения импортированной команды не нужно использовать Invoke-Command
командлет .
Пример 3. Импорт командлетов из PSSession
$S1 = New-PSSession -ComputerName s1
$S2 = New-PSSession -ComputerName s2
Import-PSSession -Session s1 -Type cmdlet -Name New-Test, Get-Test -FormatTypeName *
Import-PSSession -Session s2 -Type Cmdlet -Name Set-Test -FormatTypeName *
New-Test Test1 | Set-Test -RunType Full
Этот пример показывает, что импортированные командлеты можно использовать точно так же, как и локальные командлеты.
Эти команды импортируют New-Test
командлеты и Get-Test
из PSSession на компьютере Server01 и Set-Test
командлет из PSSession на компьютере Server02.
Несмотря на то, что командлеты были импортированы из разных сеансов PSSession, можно без ошибок передать объект из одного командлета в другой.
Пример 4. Выполнение импортированной команды в качестве фонового задания
$S = New-PSSession -ComputerName Server01
Import-PSSession -Session $S -CommandName *-test* -FormatTypeName *
$batch = New-Test -Name Batch -AsJob
Receive-Job $batch
В этом примере показано, как выполнять импортированную команду в качестве фонового задания.
Так как выполнение импортированных команд может занять больше времени, чем локальные команды, Import-PSSession
добавляет параметр AsJob к каждой импортированной команде. Параметр AsJob позволяет выполнить команду в качестве фонового задания.
Первая команда создает PSSession на компьютере Server01 и сохраняет объект PSSession в переменной $S
.
Вторая команда использует Import-PSSession
для импорта командлетов Test из PSSession в $S
в текущий сеанс.
Третья команда использует параметр AsJob импортированного New-Test
командлета для выполнения команды в New-Test
качестве фонового задания. Команда сохраняет объект задания, возвращаемый New-Test
в переменной $batch
.
Четвертая команда использует Receive-Job
командлет для получения результатов задания в переменной $batch
.
Пример 5. Импорт командлетов и функций из модуля Windows PowerShell
$S = New-PSSession -ComputerName Server01
Invoke-Command -Session $S {Import-Module TestManagement}
Import-PSSession -Session $S -Module TestManagement
В этом примере показано, как импортировать командлеты и функции из модуля Windows PowerShell на удаленном компьютере в текущий сеанс.
Первая команда создает PSSession на компьютере Server01 и сохраняет его в переменной $S
.
Вторая команда использует Invoke-Command
командлет для выполнения Import-Module
команды в PSSession в $S
.
Как правило, модуль добавляется во все сеансы с помощью Import-Module
команды в профиле Windows PowerShell, но профили не выполняются в PSSessions.
Третья команда использует параметр Module для Import-PSSession
импорта командлетов и функций модуля в текущий сеанс.
Пример 6. Create модуля во временном файле
PS C:\> Import-PSSession $S -CommandName Get-Date, SearchHelp -FormatTypeName * -AllowClobber
Name : tmp_79468106-4e1d-4d90-af97-1154f9317239_tcw1zunz.ttf
Path : C:\Users\User01\AppData\Local\Temp\tmp_79468106-4e1d-4d90-af97-1154f9317239_tcw1
zunz.ttf\tmp_79468106-4e1d-4d90-af97-1154f9317239_
tcw1zunz.ttf.psm1
Description : Implicit remoting for http://server01.corp.fabrikam.com/wsman
Guid : 79468106-4e1d-4d90-af97-1154f9317239
Version : 1.0
ModuleBase : C:\Users\User01\AppData\Local\Temp\tmp_79468106-4e1d-4d90-af97-1154f9317239_tcw1
zunz.ttf
ModuleType : Script
PrivateData : {ImplicitRemoting}
AccessMode : ReadWrite
ExportedAliases : {}
ExportedCmdlets : {}
ExportedFunctions : {[Get-Date, Get-Date], [SearchHelp, SearchHelp]}
ExportedVariables : {}
NestedModules : {}
В этом примере показано, как Import-PSSession
создать модуль во временном файле на диске. В нем также показано, что все команды преобразуются в функции перед их импортом в текущий сеанс.
Команда использует Import-PSSession
командлет для импорта командлета Get-Date
и функции SearchHelp в текущий сеанс.
Командлет Import-PSSession
возвращает объект PSModuleInfo , представляющий временный модуль. Значение свойства Path показывает, что Import-PSSession
файл модуля скрипта (PSM1) был создан во временном расположении. Свойство ExportedFunctions показывает, что Get-Date
командлет и функция SearchHelp были импортированы как функции.
Пример 7. Выполнение команды, скрытой импортированной командой
PS C:\> Import-PSSession $S -CommandName Get-Date -FormatTypeName * -AllowClobber
PS C:\> Get-Command Get-Date -All
CommandType Name Definition
----------- ---- ----------
Function Get-Date ...
Cmdlet Get-Date Get-Date [[-Date] <DateTime>] [-Year <Int32>] [-Month <Int32>]
PS C:\> Get-Date
09074
PS C:\> (Get-Command -Type Cmdlet -Name Get-Date).PSSnapin.Name
Microsoft.PowerShell.Utility
PS C:\> Microsoft.PowerShell.Utility\Get-Date
Sunday, March 15, 2009 2:08:26 PM
В этом примере показано, как выполнить команду, скрытую импортированной командой.
Первая команда импортирует Get-Date
командлет из PSSession в переменную $S
. Так как текущий Get-Date
сеанс включает командлет, параметр AllowClobber является обязательным в команде .
Вторая команда использует параметр All командлета Get-Command
для получения всех Get-Date
команд в текущем сеансе. Выходные данные показывают, что сеанс включает исходный Get-Date
командлет и функцию Get-Date
. Функция Get-Date
выполняет импортированный Get-Date
командлет в PSSession в $S
.
Третья команда выполняет Get-Date
команду . Поскольку функции имеют приоритет над командлетами, Windows PowerShell запускает импортированную Get-Date
функцию, которая возвращает юлианскую дату.
Четвертая и пятая команды показывают, как использовать полное имя для выполнения команды, которая скрыта импортированной командой.
Четвертая команда получает имя оснастки Windows PowerShell, которая добавила исходный Get-Date
командлет в текущий сеанс.
Пятая команда использует полное имя оснастки командлета Get-Date
для выполнения Get-Date
команды.
Дополнительные сведения о приоритете команд и скрытых командах см. в разделе about_Command_Precedence.
Пример 8. Импорт команд с определенной строкой в именах
PS C:\> Import-PSSession -Session $S -CommandName **Item** -AllowClobber
Эта команда импортирует команды, имена которых включают Item из PSSession в $S
. Так как команда включает параметр CommandName , но не параметр FormatTypeData , импортируется только команда.
Используйте эту команду, если вы используете Import-PSSession
для выполнения команды на удаленном компьютере и у вас уже есть данные форматирования для команды в текущем сеансе.
Пример 9. Использование параметра Module для обнаружения команд, импортированных в сеанс
PS C:\> $M = Import-PSSession -Session $S -CommandName *bits* -FormatTypeName *bits*
PS C:\> Get-Command -Module $M
CommandType Name
----------- ----
Function Add-BitsFile
Function Complete-BitsTransfer
Function Get-BitsTransfer
Function Remove-BitsTransfer
Function Resume-BitsTransfer
Function Set-BitsTransfer
Function Start-BitsTransfer
Function Suspend-BitsTransfer
Эта команда показывает, как использовать параметр Module для Get-Command
определения команд, которые были импортированы в сеанс командой Import-PSSession
.
Первая команда использует Import-PSSession
командлет для импорта команд, имена которых содержат "биты" из PSSession в переменной $S
. Команда Import-PSSession
возвращает временный модуль, а команда сохраняет модуль в переменной $m
.
Вторая команда использует Get-Command
командлет для получения команд, экспортированных модулем в переменную $M
.
Параметр Module принимает строковое значение, которое предназначено для имени модуля. Однако при передаче объекта модуля Windows PowerShell использует для него метод ToString, который возвращает имя модуля.
Команда Get-Command
является эквивалентом Get-Command $M.Name
".
Параметры
-AllowClobber
Указывает, что этот командлет импортирует указанные команды, даже если они имеют те же имена, что и команды в текущем сеансе.
При импорте команды с таким же именем, что и у команды в текущем сеансе, импортированная команда скрывает или заменяет собой исходную команду. Дополнительные сведения см. в разделе about_Command_Precedence.
По умолчанию Import-PSSession
не импортирует команды с тем же именем, что и команды в текущем сеансе.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ArgumentList
Задает массив команд, который является результатом использования указанных аргументов (значений параметров).
Например, чтобы импортировать вариант Get-Item
команды на диске сертификата (Cert:) в PSSession в , введите $S
Import-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) в создаваемом временном модуле Import-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.
По умолчанию Import-PSSession
импортирует все команды из сеанса, за исключением команд с теми же именами, что и команды в текущем сеансе. Это предотвращает скрытие или замену команд в текущем сеансе импортированными командами. Чтобы импортировать все команды, даже те, которые скрыты или заменены другими командами, используйте параметр AllowClobber.
При использовании параметра CommandName файлы форматирования для команд не импортируются, пока не будет задан параметр FormatTypeName. Аналогично, если вы используете параметр FormatTypeName, команды не импортируются, пока не будет задан параметр CommandName.
Type: | String[] |
Aliases: | Name |
Position: | 2 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-CommandType
Указывает тип объектов команд. Значение по умолчанию — Cmdlet. Используйте параметр CommandType или его псевдоним Type. Допустимые значения для этого параметра:
Alias
: псевдонимы Windows PowerShell в удаленном сеансе.All
: командлеты и функции в удаленном сеансе.Application
: все файлы, кроме Windows-PowerShell в путях, перечисленных в переменной среды Path ($env:path
) в удаленном сеансе, включая файлы .txt, .exe и .dll.Cmdlet
: командлеты в удаленном сеансе. Значение по умолчанию — "Cmdlet".ExternalScript
: .ps1 файлы в путях, перечисленных в переменной среды Path ($env:path
) в удаленном сеансе.Filter
иFunction
: функции Windows PowerShell в удаленном сеансе.Script
: скрипт блокируется в удаленном сеансе.
Эти значения определяются как перечисление на основе флагов. С помощью этого параметра можно объединить несколько значений, чтобы задать несколько флагов. Значения можно передать в параметр CommandType в виде массива значений или строки этих значений, разделенной запятыми. Командлет объединит значения с помощью операции binary-OR. Передача значений в виде массива является самым простым вариантом, а также позволяет использовать для значений заполнение табуляции.
Type: | CommandTypes |
Aliases: | Type |
Accepted values: | Alias, Function, Filter, Cmdlet, ExternalScript, Application, Script, Workflow, Configuration, All |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-DisableNameChecking
Указывает, что этот командлет подавляет сообщение с предупреждением при импорте командлета или функции, имя которых содержит неутвержденный глагол или запрещенный символ.
По умолчанию, когда импортируемый модуль экспортирует командлеты или функции с неутвержденными глаголами в именах, Windows PowerShell отображает следующее предупреждающее сообщение:
"ПРЕДУПРЕЖДЕНИЕ. Некоторые импортированные имена команд содержат неутвержденные глаголы, которые могут сделать их менее обнаруживаемыми. Используйте параметр Verbose для получения дополнительных сведений или тип Get-Verb
, чтобы просмотреть список утвержденных глаголов".
Это сообщение является всего лишь предупреждением. Импорт осуществляется для всего модуля, включая недопустимые команды. Хотя это сообщение отображается для пользователей модуля, проблема с именованием должна быть устранена автором модуля.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-FormatTypeName
Указывает инструкции по форматированию для указанных типов microsoft платформа .NET Framework. Введите имена типов. Разрешено использовать подстановочные знаки.
Значение этого параметра должно быть именем типа, возвращаемого командой Get-FormatData
в сеансе, из которого импортируются команды. Чтобы получить все данные форматирования в удаленном сеансе, введите *
.
Если команда не содержит параметр CommandName или FormatTypeName, Import-PSSession
импортирует инструкции по форматированию для всех типов платформа .NET Framework, возвращаемых командой 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
Указывает и массив команд в Windows PowerShell оснастки и модули. Введите имена оснасток и модулей. Использовать подстановочные знаки запрещено.
Import-PSSession
не удается импортировать поставщики из оснастки.
Дополнительные сведения см. в статьях about_PSSnapins и about_Modules.
Type: | String[] |
Aliases: | PSSnapin |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Prefix
Задает префикс существительных в именах импортированных команд.
Используйте этот параметр, чтобы избежать конфликтов имен, которые могут возникать, когда разные команды в сеансе имеют одинаковое имя.
Например, если указать префикс Remote, а затем импортировать Get-Date
командлет, командлет будет известен в сеансе как Get-RemoteDate
, и его не путают с исходным Get-Date
командлетом.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Session
Указывает PSSession , из которого импортируются командлеты. Введите переменную, содержащую объект сеанса или команду, которая получает объект сеанса, например New-PSSession
команду или Get-PSSession
. Можно указать только один сеанс. Это обязательный параметр.
Type: | PSSession |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Входные данные
None
Вы не можете передать объекты в этот командлет.
Выходные данные
Этот командлет возвращает тот же объект модуля, что New-Module
и Get-Module
командлеты .
Однако импортированный модуль является временным и существует только в текущем сеансе. Чтобы создать постоянный модуль на диске, используйте Export-PSSession
командлет .
Примечания
Import-PSSession
использует инфраструктуру удаленного взаимодействия PowerShell. Для использования этого командлета компьютер должен быть настроен на удаленное взаимодействие WS-Management. Дополнительные сведения см. в разделе about_Remote и about_Remote_Requirements.Import-PSSession
не импортирует переменные или поставщики PowerShell.- При импорте команд, которые имеют те же имена, что и команды в текущем сеансе, импортированные команды в сеансе могут скрывать псевдонимы, функции и командлеты, а также заменять функции и переменные. Во избежание конфликтов имен используйте параметр Prefix. Дополнительные сведения см. в разделе about_Command_Precedence.
Import-PSSession
преобразует все команды в функции перед их импортом. В результате импортированные команды работают немного иначе, чем если бы они сохранили свой исходный тип команды. Например, если импортировать командлет из PSSession и затем импортировать командлет с таким же именем из модуля или оснастки, импортированный из PSSession командлет всегда выполняется по умолчанию, поскольку функции имеют приоритет над командлетами. И наоборот, если импортировать псевдоним в сеанс, где уже есть псевдоним с таким же именем, всегда используется исходный псевдоним, поскольку псевдонимы имеют приоритет над функциями. Дополнительные сведения см. в разделе about_Command_Precedence.Import-PSSession
Write-Progress
использует командлет для отображения хода выполнения команды. Во время выполнения команды может отображаться индикатор выполнения .- Чтобы найти импортируемые команды,
Import-PSSession
используетInvoke-Command
командлет для выполненияGet-Command
команды в PSSession. Чтобы получить данные форматирования для команд, используетсяGet-FormatData
командлет . При выполненииImport-PSSession
команды могут отображаться сообщения об ошибках из этих командлетов. Кроме того,Import-PSSession
не может импортировать команды из PSSession, который не включаетGet-Command
командлеты ,Get-FormatData
,Select-Object
иGet-Help
. - Импортированные команды имеют те же ограничения, что и другие удаленные команды, включая невозможность запуска программы с пользовательским интерфейсом, например "Блокнот".
- Так как Windows PowerShell профили не выполняются в PSSessions, команды, добавляемые профилем в сеанс, недоступны для
Import-PSSession
. Чтобы импортировать команды из профиля, используйтеInvoke-Command
команду для запуска профиля в PSSession вручную перед импортом команд. - Временный модуль, который
Import-PSSession
создает, может содержать файл форматирования, даже если команда не импортирует данные форматирования. Если команда не импортирует данные форматирования, все создаваемые файлы форматирования не будут содержать данные форматирования. - Чтобы использовать
Import-PSSession
, политика выполнения в текущем сеансе не может быть ограничена или AllSigned, так как создаваемый временный модульImport-PSSession
содержит неподписанные файлы скриптов, запрещенные этими политиками. Чтобы использоватьImport-PSSession
без изменения политики выполнения для локального компьютера, используйте параметр Scope ,Set-ExecutionPolicy
чтобы задать менее ограничительную политику выполнения для одного процесса. - В Windows PowerShell 2.0 разделы справки для команд, которые импортируются из другого сеанса, не включают префикс, назначенный с помощью параметра Prefix. Чтобы получить справку для импортированной команды Windows PowerShell 2.0, используйте исходное имя команды (без префикса).