Get-Module
Вывод списка модулей, импортированных в текущем сеансе или которые можно импортировать из PSModulePath.
Синтаксис
Get-Module
[[-Name] <String[]>]
[-FullyQualifiedName <ModuleSpecification[]>]
[-All]
[<CommonParameters>]
Get-Module
[[-Name] <String[]>]
[-FullyQualifiedName <ModuleSpecification[]>]
[-All]
[-ListAvailable]
[-PSEdition <String>]
[-SkipEditionCheck]
[-Refresh]
[<CommonParameters>]
Get-Module
[[-Name] <String[]>]
[-FullyQualifiedName <ModuleSpecification[]>]
[-ListAvailable]
[-PSEdition <String>]
[-SkipEditionCheck]
[-Refresh]
-PSSession <PSSession>
[<CommonParameters>]
Get-Module
[[-Name] <String[]>]
[-FullyQualifiedName <ModuleSpecification[]>]
[-ListAvailable]
[-SkipEditionCheck]
[-Refresh]
-CimSession <CimSession>
[-CimResourceUri <Uri>]
[-CimNamespace <String>]
[<CommonParameters>]
Описание
Командлет Get-Module
перечисляет модули PowerShell, импортированные или импортированные в сеанс PowerShell. Без параметров получает модули, Get-Module
импортированные в текущий сеанс. Параметр ListAvailable используется для перечисления модулей, доступных для импорта из путей, указанных в переменной среды PSModulePath ($env:PSModulePath
).
Объект модуля, возвращаемый Get-Module
, содержит ценные сведения о модуле. Можно также передать объекты модуля другим командлетам, таким как Import-Module
командлеты и Remove-Module
командлеты.
Get-Module
перечисляет модули, но не импортирует их. Начиная с Windows PowerShell 3.0 модули автоматически импортируются при использовании команды в модуле, но Get-Module
команда не запускает автоматический импорт. Вы также можете импортировать модули в сеанс с помощью командлета Import-Module
.
Начиная с Windows PowerShell 3.0, вы можете получить и затем импортировать модули из удаленных сеансов в локальный сеанс. Эта стратегия использует функцию неявного удаленного взаимодействия PowerShell и эквивалентна использованию командлета Import-PSSession
. При использовании команд в модулях, импортированных из другого сеанса, команды выполняются неявно в удаленном сеансе. Эта функция позволяет управлять удаленным компьютером из локального сеанса.
Кроме того, начиная с Windows PowerShell 3.0, можно использовать Get-Module
и Import-Module
импортировать модули Common Information Model (CIM). Модули CIM определяют командлеты в файлах XML определения командлетов (CDXML). Эта функция позволяет использовать командлеты, реализованные в неуправляемых сборках кода, таких как написанные на C++.
Неявное удаленное взаимодействие можно использовать для управления удаленными компьютерами с включенным удаленным взаимодействием PowerShell.
Создайте PSSession на удаленном компьютере, а затем используйте параметр PSSession для Get-Module
получения модулей PowerShell в удаленном сеансе. При импорте модуля из удаленного сеанса импортированные команды выполняются в сеансе на удаленном компьютере.
Вы можете использовать аналогичную стратегию для управления компьютерами, у которых нет поддержки удаленного взаимодействия PowerShell. К ним относятся компьютеры, не работающие под управлением операционной системы Windows, и компьютеры с PowerShell, но не имеют возможности удаленного взаимодействия PowerShell.
Начните с создания сеанса CIM на удаленном компьютере. Сеанс CIM — это подключение к инструментарию управления Windows (WMI) на удаленном компьютере. Затем используйте параметр CIMSession для Get-Module
получения модулей CIM из сеанса CIM. При импорте модуля CIM с помощью Import-Module
командлета, а затем выполнения импортированных команд команды выполняются неявно на удаленном компьютере. С помощью этой стратегии, предполагающей использование инструментария WMI и модели CIM, можно управлять удаленным компьютером.
Примеры
Пример 1. Получение модулей, импортированных в текущий сеанс
Get-Module
Эта команда возвращает модули, которые были импортированы в текущий сеанс.
Пример 2. Получение установленных модулей и доступных модулей
Get-Module -ListAvailable
Эта команда возвращает модули, которые установлены на компьютере и могут быть импортированы в текущий сеанс.
Get-Module
ищет доступные модули в пути, указанном переменной среды $env:PSModulePath . Дополнительные сведения о PSModulePath см. в about_Modules и about_Environment_Variables.
Пример 3. Получение всех экспортированных файлов
Get-Module -ListAvailable -All
Эта команда возвращает все экспортированные файлы для всех доступных модулей.
Пример 4. Получение модуля по полному имени
$FullyQualifiedName = @{ModuleName="Microsoft.PowerShell.Management";ModuleVersion="3.1.0.0"}
Get-Module -FullyQualifiedName $FullyQualifiedName | Format-Table -Property Name,Version
Name Version
---- -------
Microsoft.PowerShell.Management 3.1.0.0
В этом примере возвращается модуль Microsoft.PowerShell.Management , указав полное имя модуля с помощью параметра FullyQualifiedName . Затем команда передает результаты командлету, чтобы отформатировать результаты Format-Table
в виде таблицы с именем и версией в виде заголовков столбцов.
В полном имени модуля значение ModuleVersion выступает в качестве минимальной версии. Таким образом, в этом примере он соответствует любому модулю Microsoft.PowerShell.Management , который является версией 3.1.0.0
или более поздней.
Пример 5. Получение свойств модуля
Get-Module | Get-Member -MemberType Property | Format-Table Name
Name
----
AccessMode
Author
ClrVersion
CompanyName
Copyright
Definition
Description
DotNetFrameworkVersion
ExportedAliases
ExportedCmdlets
ExportedCommands
ExportedFormatFiles
ExportedFunctions
ExportedTypeFiles
ExportedVariables
ExportedWorkflows
FileList
Guid
HelpInfoUri
LogPipelineExecutionDetails
ModuleBase
ModuleList
ModuleType
Name
NestedModules
OnRemove
Path
PowerShellHostName
PowerShellHostVersion
PowerShellVersion
PrivateData
ProcessorArchitecture
RequiredAssemblies
RequiredModules
RootModule
Scripts
SessionState
Version
Эта команда получает свойства возвращаемого объекта Get-Module
PSModuleInfo. Для каждого файла модуля имеется один объект.
С помощью свойств можно форматировать и фильтровать объекты модулей. Дополнительные сведения о свойствах см. в разделе "Свойства PSModuleInfo".
Выходные данные включают новые свойства, такие как Author и CompanyName, появившиеся в Windows PowerShell 3.0.
Пример 6. Группирование всех модулей по имени
Get-Module -ListAvailable -All | Format-Table -Property Name, Moduletype, Path -Groupby Name
Name: AppLocker
Name ModuleType Path
---- ---------- ----
AppLocker Manifest C:\Windows\system32\WindowsPowerShell\v1.0\Modules\AppLocker\AppLocker.psd1
Name: Appx
Name ModuleType Path
---- ---------- ----
Appx Manifest C:\Windows\system32\WindowsPowerShell\v1.0\Modules\Appx\en-US\Appx.psd1
Appx Manifest C:\Windows\system32\WindowsPowerShell\v1.0\Modules\Appx\Appx.psd1
Appx Script C:\Windows\system32\WindowsPowerShell\v1.0\Modules\Appx\Appx.psm1
Name: BestPractices
Name ModuleType Path
---- ---------- ----
BestPractices Manifest C:\Windows\system32\WindowsPowerShell\v1.0\Modules\BestPractices\BestPractices.psd1
Name: BitsTransfer
Name ModuleType Path
---- ---------- ----
BitsTransfer Manifest C:\Windows\system32\WindowsPowerShell\v1.0\Modules\BitsTransfer\BitsTransfer.psd1
Эта команда получает все файлы модулей, импортированные и доступные, а затем группируют их по имени модуля. Это позволяет увидеть, какие файлы модулей экспортирует каждый сценарий.
Пример 7. Отображение содержимого манифеста модуля
Эти команды отображают содержимое манифеста модуля для модуля Windows PowerShell BitsTransfer .
Модули не требуются для файлов манифеста. Если у них есть файл манифеста, файл манифеста требуется только для включения номера версии. Однако файлы манифестов часто предоставляют полезную информацию о модуле, его требованиях и содержимом.
# First command
$m = Get-Module -list -Name BitsTransfer
# Second command
Get-Content $m.Path
@ {
GUID = "{8FA5064B-8479-4c5c-86EA-0D311FE48875}"
Author = "Microsoft Corporation"
CompanyName = "Microsoft Corporation"
Copyright = "Microsoft Corporation. All rights reserved."
ModuleVersion = "1.0.0.0"
Description = "Windows PowerShell File Transfer Module"
PowerShellVersion = "2.0"
CLRVersion = "2.0"
NestedModules = "Microsoft.BackgroundIntelligentTransfer.Management"
FormatsToProcess = "FileTransfer.Format.ps1xml"
RequiredAssemblies = Join-Path $psScriptRoot "Microsoft.BackgroundIntelligentTransfer.Management.Interop.dll"
}
Первая команда получает объект PSModuleInfo , представляющий модуль BitsTransfer. Он сохраняет объект в переменной $m
.
Вторая команда использует Get-Content
командлет для получения содержимого файла манифеста в указанном пути. Он использует нотацию точек для получения пути к файлу манифеста, который хранится в свойстве Path объекта. Выходные данные показывают содержимое манифеста модуля.
Пример 8. Вывод списка файлов в каталоге модуля
dir (Get-Module -ListAvailable FileTransfer).ModuleBase
Directory: C:\Windows\system32\WindowsPowerShell\v1.0\Modules\FileTransfer
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 12/16/2008 12:36 PM en-US
-a--- 11/19/2008 11:30 PM 16184 FileTransfer.Format.ps1xml
-a--- 11/20/2008 11:30 PM 1044 FileTransfer.psd1
-a--- 12/16/2008 12:20 AM 108544 Microsoft.BackgroundIntelligentTransfer.Management.Interop.dll
Эта команда содержит файлы в каталоге модуля. Это еще один способ определить, что входит в модуль, перед его импортом. Некоторые модули могут иметь файлы справки или файлы ReadMe, в которых описывается модуль.
Пример 9. Получение модулей, установленных на компьютере
$s = New-PSSession -ComputerName Server01
Get-Module -PSSession $s -ListAvailable
Эти команды возвращают модули, которые установлены на компьютере Server01.
Первая команда использует New-PSSession
командлет для создания PSSession на компьютере Server01. Команда сохраняет PSSession в переменной $s
.
Вторая команда использует параметры PSSession и ListAvailable для Get-Module
получения модулей в PSSession в переменной$s
.
Если вы отправляете модули из других сеансов Import-Module
в командлет, Import-Module
импортирует модуль в текущий сеанс с помощью функции неявного удаленного взаимодействия. Это эквивалентно использованию командлета Import-PSSession
. Вы можете использовать командлеты из модуля в рамках текущего сеанса, но команды, использующие эти командлеты, на самом деле выполняются в рамках удаленного сеанса. Дополнительные сведения см. в разделах Import-Module
и Import-PSSession
.
Пример 10. Управление компьютером, не выполняющим операционную систему Windows
Команды в этом примере позволяют управлять системами хранения удаленных компьютеров, не работающих под управлением операционной системы Windows. Поскольку администратор в этом примере установил поставщик WMI модуля обнаружения на на компьютере, команды CIM могут использовать значения по умолчанию, которые предназначены для поставщика.
$cs = New-CimSession -ComputerName RSDGF03
Get-Module -CimSession $cs -Name Storage | Import-Module
Get-Command Get-Disk
CommandType Name ModuleName
----------- ---- ----------
Function Get-Disk Storage
Get-Disk
Number Friendly Name OperationalStatus Total Size Partition Style
------ ------------- ----------------- ---------- ---------------
0 Virtual HD ATA Device Online 40 GB MBR
Первая команда использует New-CimSession
командлет для создания сеанса на удаленном компьютере RSDGF03. Сеанс подключается к WMI на удаленном компьютере. Команда сохраняет сеанс CIM в переменной $cs
.
Вторая команда использует сеанс CIM в $cs
переменной для выполнения Get-Module
команды на компьютере RSDGF03. Команда использует параметр Name для указания модуля хранилища. Команда использует оператор конвейера (|
) для отправки модуля Import-Module
хранилища командлету, который импортирует его в локальный сеанс.
Третья команда запускает Get-Command
командлет в Get-Disk
команде в модуле хранилища.
При импорте модуля CIM в локальный сеанс PowerShell преобразует файлы CDXML, представляющие модуль CIM, в скрипты PowerShell, которые отображаются как функции в локальном сеансе.
Четвертая команда выполняет Get-Disk
команду. Хотя команда вводится в локальном сеансе, она выполняется неявно на удаленном компьютере, из которого он был импортирован. Команда получает объекты с удаленного компьютера и возвращает их в локальный сеанс.
Параметры
-All
Указывает, что этот командлет получает все модули в каждой папке модуля, включая вложенные модули, файлы манифеста (), файлы модуля скрипта (.psd1
.psm1
) и файлы двоичного модуля (.dll
). Без этого параметра Get-Module
получает только модуль по умолчанию в каждой папке модуля.
Тип: | SwitchParameter |
Position: | Named |
Default value: | False |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-CimNamespace
Задает пространство имен для альтернативного поставщика CIM, предоставляющего модули CIM. Значение по умолчанию — пространство имен поставщика модуля обнаружения WMI.
Используйте этот параметр для получения модулей CIM с компьютеров и устройств, которые не работают под управлением операционной системы Windows.
Этот параметр впервые появился в Windows PowerShell 3.0.
Тип: | String |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-CimResourceUri
Задает альтернативное расположение для модулей CIM. Значение по умолчанию — URI ресурса поставщика модуля обнаружения WMI на удаленном компьютере.
Используйте этот параметр для получения модулей CIM с компьютеров и устройств, которые не работают под управлением операционной системы Windows.
Этот параметр впервые появился в Windows PowerShell 3.0.
Тип: | Uri |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-CimSession
Указывает сеанс CIM на удаленном компьютере. Введите переменную, содержащую сеанс CIM или команду, которая получает сеанс CIM, например команду Get-CimSession .
Get-Module
использует подключение сеанса CIM для получения модулей с удаленного компьютера. При импорте модуля с помощью командлета и использования Import-Module
команд из импортированного модуля в текущем сеансе команды фактически выполняются на удаленном компьютере.
Этот параметр можно использовать для получения модулей с компьютеров и устройств, не работающих под управлением операционной системы Windows, и компьютеров с PowerShell, но не включено удаленное взаимодействие PowerShell.
Параметр CimSession получает все модули в CIMSession. Однако вы можете импортировать только модули CIM и CDXML.
Тип: | CimSession |
Position: | Named |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-FullyQualifiedName
Это значение может быть именем модуля, полной спецификацией модуля или путем к файлу модуля.
Если значение является путем, путь может быть полностью или относительным. Относительный путь разрешается относительно скрипта, содержащего инструкцию using.
Если значение является спецификацией имени или модуля, PowerShell выполняет поиск в PSModulePath для указанного модуля.
Спецификация модуля — это хэш-файл, имеющий следующие ключи.
ModuleName
- Обязательный указывает имя модуля.GUID
- Необязательный атрибут указывает GUID модуля.- Также требуется указать по крайней мере один из трех приведенных ниже ключей.
ModuleVersion
— задает минимальную допустимую версию модуля.MaximumVersion
— задает максимальную допустимую версию модуля.RequiredVersion
— указывает точную, требуемую версию модуля. Это нельзя использовать с другими ключами версии.
Параметр FullyQualifiedName нельзя указать в той же команде, что и параметр Name.
Тип: | ModuleSpecification[] |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | False |
-ListAvailable
Указывает, что этот командлет получает все установленные модули. Get-Module
получает модули в путях, перечисленных в переменной среды PSModulePath . Без этого параметра Get-Module
получает только модули, перечисленные в переменной среды PSModulePath и загруженные в текущем сеансе. ListAvailable не возвращает сведения о модулях, которые не найдены в переменной среды PSModulePath , даже если эти модули загружаются в текущем сеансе.
Тип: | SwitchParameter |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Name
Указывает имена или шаблоны имен модулей, которые получает этот командлет. Можно использовать подстановочные знаки. Вы также можете передать имена Get-Module
в . Параметр FullyQualifiedName нельзя указать в той же команде, что и параметр Name.
Имя не может принимать GUID модуля в качестве значения. Чтобы возвращать модули, указывая GUID, используйте вместо этого значение FullyQualifiedName .
Тип: | String[] |
Position: | 0 |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | True |
Принять подстановочные знаки: | True |
-PSEdition
Возвращает модули, поддерживающие указанный выпуск PowerShell.
Допустимые значения для этого параметра:
Desktop
Core
Командлет Get-Module
проверяет свойство CompatiblePSEditions объекта PSModuleInfo для указанного значения и возвращает только те модули, которые имеют его.
Примечание.
- Выпуск Desktop: создан на базе платформы .NET Framework и обеспечивает совместимость со сценариями и модулями, предназначенными для версий PowerShell в полноценных выпусках Windows, таких как Server Core и Windows Desktop.
- Выпуск Core Edition: построен на основе .NET Core и обеспечивает совместимость со скриптами и модулями, которые предназначены для версий PowerShell, выполняющихся в выпусках Windows с ограниченными возможностями, таких как Nano Server и Windows IoT.
Тип: | String |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-PSSession
Возвращает модули в указанном управляемом пользователем сеансе PowerShell (PSSession). Введите переменную, содержащую сеанс, команду, которая получает сеанс, например команду или команду, которая создает сеанс, например Get-PSSession
New-PSSession
команду.
При подключении сеанса к удаленному компьютеру необходимо указать параметр ListAvailable .
Команда Get-Module
, использующая параметр PSSession , эквивалентна использованию командлета Invoke-Command
для выполнения Get-Module -ListAvailable
команды в PSSession.
Этот параметр впервые появился в Windows PowerShell 3.0.
Тип: | PSSession |
Position: | Named |
Default value: | None |
Обязательно: | True |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-Refresh
Указывает, что этот командлет обновляет кэш установленных команд. Кэш команд создается при запуске сеанса. Он позволяет Get-Command
командлету получать команды из модулей, которые не импортируются в сеанс.
Этот параметр предназначен для сценариев разработки и тестирования, в которых содержимое модулей меняется с момента начала сеанса.
При указании параметра Refresh в команде необходимо указать ListAvailable.
Этот параметр впервые появился в Windows PowerShell 3.0.
Тип: | SwitchParameter |
Position: | Named |
Default value: | False |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
-SkipEditionCheck
Пропускает проверку поля CompatiblePSEditions .
По умолчанию не Get-Module
указываются модули в каталоге %windir%\System32\WindowsPowerShell\v1.0\Modules
, которые не указываются Core
в поле CompatiblePSEditions . Если этот параметр задан, возвращаются модули без Core
включения, поэтому возвращаются модули в пути модуля Windows PowerShell, несовместимые с PowerShell версии 6 и выше.
В macOS и Linux этот параметр ничего не делает.
Дополнительные сведения см . в about_PowerShell_Editions .
Тип: | SwitchParameter |
Position: | Named |
Default value: | None |
Обязательно: | False |
Принять входные данные конвейера: | False |
Принять подстановочные знаки: | False |
Входные данные
Имена модулей можно передать в этот командлет.
Выходные данные
Этот командлет возвращает объекты, представляющие модули. При указании параметра Get-Module
ListAvailable возвращает объект ModuleInfoGrouping, который является типом объекта PSModuleInfo, который имеет те же свойства и методы.
Примечания
PowerShell включает следующие псевдонимы для Get-Module
:
Для всех платформ.
gmo
Начиная с Windows PowerShell 3.0 основные команды, включенные в PowerShell, упаковываются в модули. Исключением является Microsoft.PowerShell.Core, который является оснасткой (PSSnapin). По умолчанию в сеанс добавляется только оснастка Microsoft.PowerShell.Core . Модули импортируются автоматически при первом использовании и можно использовать
Import-Module
командлет для их импорта.В Windows PowerShell 2.0 и в ведущих программах, которые создают сеансы более старого стиля в более поздних версиях PowerShell, основные команды упаковываются в оснастки (PSSnapins). Исключением является Microsoft.PowerShell.Core, который всегда является оснасткой. Кроме того, удаленные сеансы, такие как запущенные командлетом
New-PSSession
, являются сеансами старого стиля, которые включают основные оснастки.Сведения о методе CreateDefault2 , который создает сеансы с новым стилем с основными модулями, см. в статье CreateDefault2 Method.
Get-Module
Получает модули только в расположениях, хранящихся в значении переменной среды PSModulePath ($env:PSModulePath
). КомандлетImport-Module
может импортировать модули в других расположениях, но его нельзя использоватьGet-Module
для их получения.Кроме того, начиная с PowerShell 3.0, новые свойства были добавлены в объект, который
Get-Module
возвращает, что упрощает изучение модулей даже до их импорта. Все свойства заполняются перед импортом. К ним относятся свойства ExportedCommands, ExportedCmdlets и ExportedFunctions, которые перечисляют команды, экспортируемые модулем.Параметр ListAvailable получает только хорошо сформированные модули, то есть папки, содержащие по крайней мере один файл, базовый имя которого совпадает с именем папки модуля. Базовое имя — это имя без расширения имени файла. Папки, содержащие файлы с разными именами, считаются контейнерами, но не модулями.
Чтобы получить модули, реализованные в виде DLL-файлов, но не заключены в папку модуля, укажите параметры ListAvailable и All .
Для использования функции сеанса CIM на удаленном компьютере должен быть установлен компонент удаленного взаимодействия WS-Management и инструментарий управления Windows (WMI), который представляет собой реализацию стандарта CIM корпорации Майкрософт. На компьютере должен быть также поставщик WMI обнаружения модулей или другой поставщик WMI с теми же основными возможностями.
Вы можете использовать функцию сеанса CIM на компьютерах, которые не работают под управлением операционной системы Windows и на компьютерах Windows с PowerShell, но не включены удаленное взаимодействие PowerShell.
Можно также использовать параметры CIM для получения модулей CIM с компьютеров с включенным удаленного взаимодействия PowerShell. Это включает локальный компьютер. При создании сеанса CIM на локальном компьютере PowerShell использует DCOM вместо WMI для создания сеанса.
Связанные ссылки
PowerShell