Import-Module
Добавляет модули в текущий сеанс.
Синтаксис
Import-Module [-Name] <string[]> [-Alias <string[]>] [-ArgumentList <Object[]>] [-AsCustomObject] [-Cmdlet <string[]>] [-Force] [-Function <string[]>] [-Global] [-PassThru] [-Prefix <string>] [-Variable <string[]>] [-Version <Version>] [<CommonParameters>]
Import-Module [-Сборка] <Assembly[]> [-Alias <string[]>] [-ArgumentList <Object[]>] [-AsCustomObject] [-Cmdlet <string[]>] [-Force] [-Function <string[]>] [-Global] [-PassThru] [-Prefix <string>] [-Variable <string[]>] [-Version <Version>] [<CommonParameters>]
Import-Module [-ModuleInfo] <PSModuleInfo[]> [-Alias <string[]>] [-ArgumentList <Object[]>] [-AsCustomObject] [-Cmdlet <string[]>] [-Force] [-Function <string[]>] [-Global] [-PassThru] [-Prefix <string>] [-Variable <string[]>] [-Version <Version>] [<CommonParameters>]
Описание
Командлет Import-Module добавляет один или несколько модулей в текущий сеанс.
Модуль представляет собой пакет, содержащий элементы (такие как командлеты, поставщики, скрипты, функции, переменные и другие средства и файлы), которые можно использовать в Windows PowerShell. После импорта модуля в сеансе можно использовать элементы модуля.
Чтобы импортировать модуль, используйте параметр Name, Assembly или ModuleInfo для указания импортируемого модуля. По умолчанию командлет Import-Module импортирует все элементы, экспортируемые модулем, но для ограничения импорта элементов можно использовать параметры Alias, Function, Cmdlet и Variable.
Командлет Import-Module импортирует модуль только в текущий сеанс. Чтобы импортировать модуль во все сеансы, команду Import-Module следует добавить в профиль Windows PowerShell пользователя. Дополнительные сведения о профилях см. в разделе about_Profiles.
Дополнительные сведения о модулях см. в разделе about_Modules.
Параметры
-Alias <string[]>
Импортирует только указанные псевдонимы из модуля в текущий сеанс. Введите список псевдонимов, разделенных запятыми. Подстановочные знаки разрешены.
Некоторые модули автоматически экспортируют некоторые псевдонимы в сеанс при импорте модуля. Этот параметр позволяет выбирать из экспортированных псевдонимов.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
true |
-ArgumentList <Object[]>
Указывает аргументы (значения параметров), которые передаются модулю скрипта при обработке команды Import-Module. Этот параметр допустим только при импорте модуля скрипта.
Параметр ArgumentList также можно вызвать с помощью псевдонима "args". Дополнительные сведения см. в разделе About_Aliases.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
-AsCustomObject
Возвращает пользовательский объект с элементами, представляющими импортированные элементы модуля. Этот параметр допустим только для модулей скрипта.
При использовании параметра AsCustomObject команда Import-Module импортирует элементы модуля в сеанс и возвращает объект PSCustomObject, а не объект PSModuleInfo. Можно сохранить пользовательский объект в переменной и использовать точку для обращения к его элементам.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
-Сборка <Assembly[]>
Импортирует командлеты и поставщики, реализованные в заданных объектах сборки. Введите переменную, содержащую объекты сборки, либо введите команду, создающую их. Кроме того, можно передать объект сборки командлету Import-Module по конвейеру.
При использовании этого параметра из заданных сборок импортируются только командлеты и поставщики. Если в модуле содержатся другие файлы, они не импортируются, в результате важные элементы модуля могут отсутствовать. Используйте этот параметр для отладки и тестирования модуля или в случае, если такое указание дается автором модуля.
Обязательно? |
true |
Позиция? |
1 |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
true (ByValue) |
Принимать подстановочные знаки? |
false |
-Cmdlet <string[]>
Импортирует только указанные командлеты из модуля в текущий сеанс. Введите список командлетов. Подстановочные знаки разрешены.
Некоторые модули автоматически экспортируют некоторые командлеты в сеанс при импорте модуля. Этот параметр позволяет выбирать из экспортированных командлетов.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
true |
-Force
Повторно импортирует модуль и его элементы, даже если модуль или его элементы находятся в режиме доступа только для чтения.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
False |
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
-Function <string[]>
Импортирует только указанные функции из модуля в текущий сеанс. Введите список функций. Подстановочные знаки разрешены.
Некоторые модули автоматически экспортируют некоторые функции в сеанс при импорте модуля. Этот параметр позволяет выбирать из экспортированных функций.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
true |
-Global
При использовании в модуле скрипта (PSM1) этот параметр импортирует модули в состояние глобального сеанса.
Этот параметр можно использовать, только когда он появляется в модуле скрипта. В противном случае он игнорируется.
По умолчанию команды в модуле скрипта, включая команды из вложенных модулей, импортируются в состояние сеанса вызывающего объекта. Для ограничения команд, экспортируемых модулем, используйте команду Export-ModuleMember в модуле скрипта.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
-ModuleInfo <PSModuleInfo[]>
Задает объекты модулей, которые требуется импортировать. Введите переменную, содержащую объекты модулей, либо команду, получающую объекты модулей, например "Get-Module -listavailable". Кроме того, можно передать объекты модулей командлету Import-Module по конвейеру.
Обязательно? |
true |
Позиция? |
1 |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
true (ByValue) |
Принимать подстановочные знаки? |
false |
-Name <string[]>
Определяет имена импортируемых модулей. Введите имя модуля или имя файла модуля, например файла PSD1, PSM1, DLL или PS1. Пути к файлам являются необязательным параметром. Подстановочные знаки запрещены. Имена модулей и имена файлов можно передать командлету Import-Module по конвейеру.
Если путь не указан, командлет Import-Module выполняет поиск модуля, который присутствует в путях, сохраненных в переменной среды PSModulePath ($env:PSModulePath).
Укажите только имя модуля, если это возможно. При указании имени файла будут импортированы только элементы, реализованные в этом файле. Если в модуле содержатся другие файлы, они не импортируются, в результате важные элементы модуля могут отсутствовать.
Обязательно? |
true |
Позиция? |
1 |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
true (ByValue) |
Принимать подстановочные знаки? |
false |
-PassThru
Возвращает объекты, представляющие импортированные модули. По умолчанию этот командлет не формирует никаких выходных данных.
Примечания
-- При передаче выходных данных команды "Get-Module -listavailable" по конвейеру команде Import-Module с помощью параметра PassThru команда Import-Module возвращает объект, переданный ей командой Get-Module, не обновляя его. Таким образом, значения свойств Exported и NestedModules остаются неопределенными.
-- При использовании параметра Prefix для указания префикса элемента префикс не отображается в именах элементов в свойствах объекта модуля. В объект заносится информация об экспорте, выполненном до применения префикса.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
-Prefix <string>
Добавляет заданный префикс к существительным в именах импортированных элементов модуля.
Этот параметр используется для предотвращения конфликтов имен, который может возникнуть, если несколько элементов в сеансе будут иметь одинаковые имена. Этот параметр не изменяет содержимое модуля и не влияет на файлы, импортируемые модулем для внутреннего использования (так называемые "вложенные модули"). Он влияет только на имена элементов в текущем сеансе.
Например, если указать префикс "UTC" и импортировать командлет Get-Date, командлет в сеансе будет называться Get-UTCDate, и система не будет путать его с исходным командлетом Get-Date.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
-Variable <string[]>
Импортирует только указанные переменные из модуля в текущий сеанс. Введите список переменных. Подстановочные знаки разрешены.
Некоторые модули автоматически экспортируют некоторые переменные в сеанс при импорте модуля. Этот параметр позволяет выбирать из экспортированных переменных.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
true |
-Version <Version>
Задает версию импортируемого модуля. Этот параметр следует использовать в случае, если в системе присутствуют различные версии одного модуля.
Обязательно? |
false |
Позиция? |
named |
Значение по умолчанию |
|
Принимать входные данные из конвейера? |
false |
Принимать подстановочные знаки? |
false |
<CommonParameters>
Данный командлет поддерживает общие параметры -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer и -OutVariable. Дополнительные сведения см. в разделе about_Commonparameters.
Ввод и вывод
Входным типом является тип объектов, которые можно передавать командлету по конвейеру. Возвращаемым типом является тип объектов, возвращаемых командлетом.
Входные данные |
System.String, System.Management.Automation.PSModuleInfo, System.Reflection.Assembly Командлету Import-Module можно передать по конвейеру имя модуля, объект модуля или объект сборки. |
Выходные данные |
None, System.Management.Automation.PSModuleInfo или System.Management.Automation.PSCustomObject По умолчанию командлет Import-Module не формирует никаких выходных данных. При использовании параметра Passthru командлет создает объект System.Management.Automation.PSModuleInfo, представляющий модуль. Если используется параметр AsCustomObject, командлет создает объект PSCustomObject. |
Примечания
Командлет Import-Module также можно вызывать с помощью псевдонима "ipmo". Дополнительные сведения см. в разделе About_Aliases.
Перед импортом модуля необходимо скопировать каталог модуля в каталог, доступный на локальном компьютере. Дополнительные сведения см. в разделе About_Modules.
Элементы модуля выполняются в собственном состоянии закрытого сеанса модуля, поэтому команды, используемые ими для внутренней обработки, не влияют на состояние сеанса.
При импорте в сеанс элементов с одинаковыми именами, принадлежащих к одному типу, по умолчанию Windows PowerShell использует последний импортированный элемент. Переменные и псевдонимы заменяются параметрами нового элемента, при этом исходные версии недоступны. Функции, командлеты и поставщики просто затеняются новыми элементами, доступ к ним возможен при использовании имени команды с указанием имени оснастки, модуля или пути к функции.
Чтобы обновить данные форматирования для команд, импортированных из модуля, используйте командлет Update-FormatData. Кроме того, командлет Update-FormatData обновляет данные форматирования для команд в сеансе, импортированных из модулей. При изменении файла форматирования для модуля можно выполнить команду Update-FormatData, чтобы обновить данные форматирования для импортированных команд. Импортировать модуль повторно не требуется.
Для импорта модуля, созданного командлетом Import-PSSession или Export-PSSession, политика выполнения в текущем сеансе не может иметь значение Restricted или AllSigned, поскольку создаваемые командлетами Import-PSSession и Export-PSSession модули содержат неподписанные файлы скриптов, которые запрещены этими политиками. Чтобы использовать командлет Import-Module без изменения политики выполнения для локального компьютера, необходимо с помощью параметра Scope командлета Set-ExecutionPolicy задать менее жесткую политику выполнения для одного процесса.
Пример 1
C:\PS>import-module -name BitsTransfer
Описание
-----------
Эта команда импортирует элементы модуля BitsTransfer в текущий сеанс.
Имя параметра Name (-Name) не является обязательным и может быть опущено.
По умолчанию командлет Import-Module не формирует никаких выходных данных при импорте модуля. Чтобы обеспечить формирование выходных данных, используйте параметр PassThru или AsCustomObject либо общий параметр Verbose.
Пример 2
C:\PS>get-module -listAvailable | import-module
Описание
-----------
Этак команда импортирует все доступные модули в пути, указанном переменной среды PSModulePath ($env:psmodulepath), в текущий сеанс.
Пример 3
C:\PS>$m = get-module -ListAvailable BitsTransfer, ServerBackup
C:\PS> import-module -moduleInfo $m
Описание
-----------
Эти команды импортируют элементы модулей BitsTransfer и ServerBackup в текущий сеанс.
Первая команда использует командлет Get-Module для получения объектов PSModuleInfo, представляющих модули BitsTransfer и ServerBackup. Она сохраняет объекты в переменной $m. Параметр ListAvailable является обязательным при получении модулей, пока не импортированных в сеанс.
Вторая команда использует параметр ModuleInfo командлета Import-Module, чтобы импортировать модули в текущий сеанс.
Эти команды эквиваленты использованию оператора конвейера (|) для передачи выходных данных команды Get-Module командлету Import-Module.
Пример 4
C:\PS>import-module -name c:\ps-test\modules\test -verbose
VERBOSE: Loading module from path 'C:\ps-test\modules\Test\Test.psm1'.
VERBOSE: Exporting function 'my-parm'.
VERBOSE: Exporting function 'get-parm'.
VERBOSE: Exporting function 'get-spec'.
VERBOSE: Exporting function 'get-specDetails'.
Описание
-----------
Эта команда использует путь, заданный явным образом, для указания импортируемого модуля.
Она также использует общий параметр Verbose для получения списка элементов, импортированных из модуля. При вызове параметров Verbose, PassThru или AsCustomObject командлет Import-Module не формирует никаких выходных данных при импорте модуля.
Пример 5
C:\PS>import-module BitsTransfer -cmdlet Add-BitsTransferFile, Get-BitsTransfer
C:\PS> get-module BitsTransfer
Name : BitsTransfer
Path : C:\Windows\system32\WindowsPowerShell\v1.0\Modules\BitsTransfer\BitsTransfer.psd1
Description :
Guid : 8fa5064b-8479-4c5c-86ea-0d311fe48875
Version : 1.0.0.0
ModuleBase : C:\Windows\system32\WindowsPowerShell\v1.0\Modules\BitsTransfer
ModuleType : Manifest
PrivateData :
AccessMode : ReadWrite
ExportedAliases : {}
ExportedCmdlets : {[Add-BitsTransfer, Add-BitsTransfer], [Complete-BitsTransfer, Complete-BitsTransfer], [Get-BitsTransfer, Get-BitsTransfer], [Rem
ove-BitsTransfer, Remove-BitsTransfer]...}
ExportedFunctions : {}
ExportedVariables : {}
NestedModules : {Microsoft.BackgroundIntelligentTransfer.Management}
C:\PS> get-command -module BitsTransfer
CommandType Name Definition
----------- ---- ----------
Cmdlet Add-BitsTransfer Add-BitsTransfer [-BitsJob] <BitsJob[]> [-Source] <String[]> [[-Destination] <String[]>] [-Verbose] [-Debug] [-ErrorA...
Cmdlet Get-BitsTransfer Get-BitsTransfer [[-Name] <String[]>] [-AllUsers] [-Verbose] [-Debug] [-ErrorAction <ActionPreference>] [-WarningActi...
Описание
-----------
В этом примере показано, как ограничить элементы модуля, импортируемые в сеанс, а также влияние этой команды на сеанс.
Первая команда импортирует только командлеты Add-BitsTransfer и Get-BitsTransfer из модуля BitsTransfer. Эта команда использует параметр Cmdlet для ограничения командлетов, импортируемых модулем. Параметры Alias, Variable и Function также можно использовать для ограничения других элементов, импортируемых модулем.
Вторая команда использует командлет Get-Module для получения объекта, представляющего модуль BitsTransfer. В свойстве ExportedCmdlets перечислены все командлеты, экспортируемые модулем, даже если не все они были импортированы.
Третья команда использует параметр Module командлета Get-Command для получения команд, импортированных из модуля BitsTransfer. Результаты подтверждают, что были импортированы только командлеты Add-BitsTransfer и Get-BitsTransfer.
Пример 6
C:\PS>import-module BitsTransfer -prefix PS -passthru
Name : bitstransfer
Path : C:\Windows\system32\WindowsPowerShell\v1.0\Modules\bitstransfer\bitstransfer.psd1
Description :
Guid : 8fa5064b-8479-4c5c-86ea-0d311fe48875
Version : 1.0.0.0
ModuleBase : C:\Windows\system32\WindowsPowerShell\v1.0\Modules\bitstransfer
ModuleType : Manifest
PrivateData :
AccessMode : ReadWrite
ExportedAliases : {}
ExportedCmdlets : {[Add-BitsTransfer, Add-BitsTransfer], [Remove-BitsTransfer, Remove-BitsTransfer], [Complete-BitsTransfer, Complete-BitsTransfer]
, [Get-BitsTransfer, Get-BitsTransfer]...}
ExportedFunctions : {}
ExportedVariables : {}
NestedModules : {Microsoft.BackgroundIntelligentTransfer.Management}
C:\PS> get-command -module bitstransfer
CommandType Name Definition
----------- ---- ----------
Cmdlet Add-PSBitsTransfer Add-PSBitsTransfer [-BitsJob] <BitsJob[]> [-Source] <String[]> ...
Cmdlet Complete-PSBitsTransfer Complete-PSBitsTransfer [-BitsJob] <BitsJob[]> [-Verbose] [-Deb...
Cmdlet Get-PSBitsTransfer Get-PSBitsTransfer [[-Name] <String[]>] [-AllUsers] [-Verbose] ...
Cmdlet Remove-PSBitsTransfer Remove-PSBitsTransfer [-BitsJob] <BitsJob[]> [-Verbose] [-Debug...
Cmdlet Resume-PSBitsTransfer Resume-PSBitsTransfer [-BitsJob] <BitsJob[]> [-Asynchronous] [-...
Cmdlet Set-PSBitsTransfer Set-PSBitsTransfer [-BitsJob] <BitsJob[]> [-DisplayName <String...
Cmdlet Start-PSBitsTransfer Start-PSBitsTransfer [[-Source] <String[]>] [[-Destination] <St...
Cmdlet Suspend-PSBitsTransfer Suspend-PSBitsTransfer [-BitsJob] <BitsJob[]> [-Verbose] [-Debu...
Описание
-----------
Эти команды импортируют модуль BitsTransfer в текущий сеанс, добавляют префикс к именам элементов и затем отображают элементы с именами, к которым добавлен префикс.
Первая команда импортирует модуль BitsTransfer с помощью командлета Import-Module. Она использует параметр Prefix для добавления префикса PS ко всем элементам, импортированным из модуля, и параметр PassThru для возврата объекта модуля, представляющего импортированный модуль.
Объект модуля, возвращаемого командой, имеет свойство ExportedCmdlets, в котором перечисляются экспортированные элементы. Префикс не отображается в именах командлетов, поскольку он применяется после экспорта элементов (но перед импортом элементов).
Вторая команда использует командлет Get-Command для получения элементов, импортированных из модуля. Для указания модуля используется параметр Module. В выходных данных отображаются элементы модуля с именами, к которым добавлен префикс.
Префикс применяется к именам элементов только в рамках текущего сеанса. Он не изменяет содержимое модуля.
Пример 7
C:\PS>get-module -list | format-table -property name, moduletype -auto
Name ModuleType
---- ----------
Show-Calendar Script
BitsTransfer Manifest
PSDiagnostics Manifest
TestCmdlets Script
C:\PS> $a = import-module -name Show-Calendar -asCustomObject
C:\PS> $a | get-member
TypeName: System.Management.Automation.PSCustomObject
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
Show-Calendar ScriptMethod System.Object Show-Calendar();
C:\PS> $a."show-calendar"()
Описание
-----------
В этих командах показано, как получать и использовать пользовательский объект, возвращаемый командлетом Import-Module.
В пользовательские объекты включаются виртуальные элементы, представляющие импортированные элементы модуля. Например, командлеты и функции в модуле преобразуются в методы-скрипты пользовательского объекта.
Пользовательские объекты очень удобны при создании скриптов. Они также удобны при совпадении имен нескольких импортированных объектов. Использование метода-скрипта объекта эквивалентно указанию полного имени импортированного элемента, включая имя модуля.
Параметр AsCustomObject может использоваться только в рамках модуля скрипта, поэтому первой задачей является определение, какой из доступных модулей является модулем скрипта.
Первая команда получает все доступные модули с помощью командлета Get-Module. Команда использует оператор конвейера (|) для передачи объектов модулей командлету Format-Table, который отображает в таблице значения параметров Name и ModuleType для каждого модуля.
Вторая команда импортирует модуль-скрипт ShowCalendar с помощью командлета Import-Module. Параметр AsCustomObject используется для формирования пользовательского объекта. Полученный пользовательский объект сохраняется в переменной $a.
Третья команда с помощью оператора конвейера передает переменную $a командлету Get-Member, который получает свойства и методы объекта PSCustomObject, сохраненного в переменной $a. В выходных данных отображается метод-скрипт Show-Calendar.
Последняя команды использует метод-скрипт Show-Calendar. Имя метода должно быть заключено в кавычки, поскольку оно содержит дефис.
Пример 8
C:\PS>import-module BitsTransfer
C:\PS> import-module BitsTransfer -force -prefix PS
Описание
-----------
В этом примере показано, как использовать параметр Force командлета Import-Module при повторном импорте модуля в тот же сеанс.
Первая команда импортирует модуль BitsTransfer. Вторая команда повторно импортирует модуль, на этот раз с указанием параметра Prefix.
Во второй команде также задан параметр Force, который удаляет модуль и снова импортирует его. Без этого параметра сеанс содержал бы две копии каждого командлета BitsTransfer: одну копию со стандартным именем, а вторую — с именем с префиксом.
Пример 9
C:\PS>get-date
Saturday, September 12, 2009 6:47:04 PM
C:\PS> import-module TestModule
C:\PS> get-date
09255
C:\PS> get-command get-date | format-table -property commandtype, name, pssnapin, module -auto
CommandType Name pssnapin Module
----------- ---- -------- ------
Function Get-Date TestModule
Cmdlet Get-Date Microsoft.PowerShell.Utility
C:\PS> Microsoft.PowerShell.Utility\get-date
Saturday, September 12, 2009 6:33:23 PM
Описание
-----------
В этом примере показано, как выполнить команды, скрытые импортированными командами.
Первая команда выполняет командлет Get-Date, входящий в Windows PowerShell. Она возвращает объект DateTime с текущей датой.
Вторая команда импортирует модуль TestModule. В этот модуль входит функция Get-Date, которая возвращает дату по юлианскому календарю.
Третья команда снова выполняет команду Get-Date. Поскольку функции имеют приоритет перед командлетами, была выполнена функция Get-Date из модуля TestModule, а не командлет Get-Date.
Четвертая команда показывает, что в сеансе имеется две команды Get-Date, функция из модуля TestModule и командлет из оснастки Microsoft.PowerShell.Utility.
Пятая команда выполняет скрытый командлет, указав имя команды с именем оснастки.
Дополнительные сведения о приоритете команд в Windows PowerShell см. в разделе about_command_precedence.
См. также
Концепции
Get-Module
New-Module
Remove-Module
Export-ModuleMember
about_Modules