Get-Module

Возвращает модули, которые были или могут быть импортированы в текущий сеанс.

Синтаксис

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 объект модуля содержит ценные сведения о модуле. Вы также можете передать объекты модуля другим командлетам, таким как Import-Module командлеты и Remove-Module командлеты.

Без параметров получает модули, Get-Module импортированные в текущий сеанс. Чтобы получить все установленные модули, укажите параметр ListAvailable .

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), в которых командлеты определены в файлах XML определения командлетов (CDXML). Эта функция позволяет использовать командлеты, реализованные в неуправляемых сборках кода, таких как написанные на C++.

Благодаря этим новым функциям Get-Module и Import-Module командлетам становятся основными средствами для управления разнородными предприятиями, включающими компьютеры под управлением операционной системы Windows и компьютеров под управлением других операционных систем.

Чтобы управлять удаленными компьютерами под управлением операционной системы Windows с включенным удаленным взаимодействием PowerShell и PowerShell, создайте PSSession на удаленном компьютере, а затем используйте параметр Get-ModulePSSession для получения модулей PowerShell в PSSession. При импорте модулей и использовании импортированных команд в текущем сеансе команды выполняются неявно в PSSession на удаленном компьютере. С помощью этой стратегии можно управлять удаленным компьютером.

Вы можете использовать аналогичную стратегию для управления компьютерами, для которых не включено удаленное взаимодействие PowerShell. К ним относятся компьютеры, которые не работают под управлением операционной системы Windows, и компьютеры с PowerShell, но не имеют удаленного взаимодействия PowerShell.

Начните с создания сеанса CIM на удаленном компьютере. Сеанс CIM — это подключение к инструментарию управления Windows (WMI) на удаленном компьютере. Затем используйте параметр Get-ModuleCIMSession для получения модулей 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. Получение модуля по полному имени

$FullyQualifedName = @{ModuleName="Microsoft.PowerShell.Management";ModuleVersion="3.1.0.0"}
Get-Module -FullyQualifiedName $FullyQualifedName | Format-Table -Property Name,Version

Name                             Version
----                             -------
Microsoft.PowerShell.Management  3.1.0.0

Эта команда получает модуль Microsoft.PowerShell.Management , указав полное имя модуля с помощью параметра FullyQualifiedName . Затем команда передает результаты в Format-Table командлет, чтобы отформатировать результаты в виде таблицы с именем и версией в виде заголовков столбцов.

Пример 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-ModulePSModuleInfo. Для каждого файла модуля имеется один объект.

С помощью свойств можно форматировать и фильтровать объекты модулей. Дополнительные сведения о свойствах см. в разделе "Свойства 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.

Вторая команда использует параметры Get-ModulePSSession и ListAvailable для получения модулей в 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 получает только модуль по умолчанию в каждой папке модуля.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-CimNamespace

Задает пространство имен для альтернативного поставщика CIM, предоставляющего модули CIM. Значение по умолчанию — пространство имен поставщика модуля обнаружения WMI.

Используйте этот параметр для получения модулей CIM с компьютеров и устройств, которые не работают под управлением операционной системы Windows.

Этот параметр впервые появился в Windows PowerShell 3.0.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-CimResourceUri

Задает альтернативное расположение для модулей CIM. Значение по умолчанию — URI ресурса поставщика модуля обнаружения WMI на удаленном компьютере.

Используйте этот параметр для получения модулей CIM с компьютеров и устройств, которые не работают под управлением операционной системы Windows.

Этот параметр впервые появился в Windows PowerShell 3.0.

Type:Uri
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-CimSession

Указывает сеанс CIM на удаленном компьютере. Введите переменную, содержащую сеанс CIM или команду, которая получает сеанс CIM, например команду Get-CimSession .

Get-Module использует подключение сеанса CIM для получения модулей с удаленного компьютера. При импорте модуля с помощью командлета Import-Module и использовании команд из импортированного модуля в текущем сеансе команды фактически выполняются на удаленном компьютере.

Этот параметр можно использовать для получения модулей с компьютеров и устройств, не работающих под управлением операционной системы Windows, и компьютеров с PowerShell, но не включено удаленное взаимодействие PowerShell.

Параметр CimSession возвращает все модули из сеанса CIMSession. Однако вы можете импортировать только модули CIM и CDXML.

Type:CimSession
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-FullyQualifiedName

Задает модули с именами, указанными в виде объектов ModuleSpecification . См. раздел "Примечания " конструктора ModuleSpecification (Hashtable).

Например, параметр 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:True
Accept wildcard characters:False

-ListAvailable

Указывает, что этот командлет получает все установленные модули. Get-Module возвращает модули в путях, перечисленных в переменной среды PSModulePath . Без этого параметра Get-Module получает только модули, перечисленные в переменной среды PSModulePath и загруженные в текущем сеансе. Параметр ListAvailable не возвращает информацию о модулях, которые не найдены в переменной среды PSModulePath, даже если они загружены в текущий сеанс.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Name

Задает имена или шаблоны имен модулей, которые получает этот командлет. Можно использовать подстановочные знаки. Вы также можете передать имена Get-Moduleв . Параметр FullyQualifiedName нельзя указать в той же команде, что и параметр Name .

Имя не может принимать GUID модуля в качестве значения. Чтобы вернуть модули, указав GUID, используйте вместо этого значение FullyQualifiedName .

Type:String[]
Position:0
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:True

-PSEdition

Возвращает модули, поддерживающие указанный выпуск PowerShell.

Допустимые значения для этого параметра:

  • Рабочий стол
  • Основные сведения

Командлет Get-Module проверяет свойство CompatiblePSEditions объекта PSModuleInfo для указанного значения и возвращает только те модули, для которых он задан.

Примечание

  • Выпуск Desktop: создан на базе платформы .NET Framework и обеспечивает совместимость со сценариями и модулями, предназначенными для версий PowerShell в полноценных выпусках Windows, таких как Server Core и Windows Desktop.
  • Выпуск Core Edition: построен на основе .NET Core и обеспечивает совместимость со скриптами и модулями, которые предназначены для версий PowerShell, выполняющихся в выпусках Windows с ограниченными возможностями, таких как Nano Server и Windows IoT.
Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-PSSession

Возвращает модули в указанном сеансе PowerShell, управляемом пользователем (PSSession). Введите переменную, содержащую сеанс, команду, которая получает сеанс, например команду или команду, которая создает сеанс, например Get-PSSessionNew-PSSession команду.

При подключении сеанса к удаленному компьютеру необходимо указать параметр ListAvailable .

Команда Get-Module , использующая параметр PSSession , эквивалентна использованию командлета Invoke-Command для выполнения Get-Module -ListAvailable команды в PSSession.

Этот параметр впервые появился в Windows PowerShell 3.0.

Type:PSSession
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Refresh

Указывает, что этот командлет обновляет кэш установленных команд. Кэш команд создается при запуске сеанса. Он позволяет Get-Command командлету получать команды из модулей, которые не импортируются в сеанс.

Этот параметр предназначен для сценариев разработки и тестирования, в которых содержимое модулей меняется с момента начала сеанса.

При указании параметра Refresh в команде необходимо указать ListAvailable.

Этот параметр впервые появился в Windows PowerShell 3.0.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SkipEditionCheck

Пропускает проверку CompatiblePSEditions поля.

По умолчанию Get-Module пропускает модули в каталоге %windir%\System32\WindowsPowerShell\v1.0\Modules , который не указан Core в CompatiblePSEditions поле. Если этот параметр установлен, будут возвращены модули без Core включения, чтобы модули в Windows PowerShell пути модуля, несовместимые с PowerShell Core.

В macOS и Linux этот параметр ничего не делает.

Дополнительные сведения см. в about_PowerShell_Editions .

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

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

String

Имена модулей можно передать в этот командлет.

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

PSModuleInfo

Этот командлет возвращает объекты, представляющие модули. При указании параметра Get-ModuleListAvailable возвращает объект ModuleInfoGrouping, который является типом объекта PSModuleInfo, который имеет те же свойства и методы.

Примечания

  • Начиная с Windows PowerShell 3.0 основные команды, включенные в PowerShell, упаковываются в модули. Исключением является Microsoft.PowerShell.Core, которая является оснасткой (PSSnapin). По умолчанию в сеанс добавляется только оснастка Microsoft.PowerShell.Core. Модули импортируются автоматически при первом использовании, и их можно импортировать с помощью командлета Import-Module .

  • Начиная с версии Windows PowerShell 3.0 основные команды, установленные с помощью PowerShell, упаковываются в модули. В Windows PowerShell 2.0 и в ведущих программах, которые создают сеансы старого стиля в более поздних версиях PowerShell, основные команды упаковываются в оснастки (PSSnapins). Исключением является Microsoft.PowerShell.Core, который всегда является оснасткой. Кроме того, удаленные сеансы, такие как запущенные командлетом New-PSSession , — это сеансы старого стиля, включающие основные оснастки.

    Сведения о методе CreateDefault2 , который создает сеансы нового стиля с основными модулями, см. в статье "Метод CreateDefault2".

  • Get-Module Возвращает только модули в расположениях, которые хранятся в значении переменной среды PSModulePath ($env:PSModulePath). Параметр Path командлета 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 для создания сеанса.