Поделиться через


Get-Module

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

Синтаксис

Get-Module
   [[-Name] <String[]>]
   [-FullyQualifiedName <ModuleSpecification[]>]
   [-All]
   [<CommonParameters>]
Get-Module
   [[-Name] <String[]>]
   [-FullyQualifiedName <ModuleSpecification[]>]
   [-ListAvailable]
   [-Refresh]
   -CimSession <CimSession>
   [-CimResourceUri <Uri>]
   [-CimNamespace <String>]
   [<CommonParameters>]
Get-Module
   [[-Name] <String[]>]
   [-FullyQualifiedName <ModuleSpecification[]>]
   [-ListAvailable]
   [-Refresh]
   -PSSession <PSSession>
   [<CommonParameters>]
Get-Module
   [[-Name] <String[]>]
   [-FullyQualifiedName <ModuleSpecification[]>]
   [-All]
   [-ListAvailable]
   [-Refresh]
   [<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 на удаленном компьютере, а затем используйте параметр PSSessionGet-Module, чтобы получить модули PowerShell в PSSession. При импорте модулей и использовании импортированных команд в текущем сеансе команды выполняются неявно в PSSession на удаленном компьютере. Эту стратегию можно использовать для управления удаленным компьютером.

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

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

$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, чтобы отформатировать результаты в виде таблицы с Name и Version в качестве заголовков столбцов.

Пример 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

Эта команда получает свойства объекта PSModuleInfo, возвращающего Get-Module. Существует один объект для каждого файла модуля.

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

Тип:CimSession
Position:Named
Default value:None
Обязательно:True
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-FullyQualifiedName

Задает имена модулей в виде объектов ModuleSpecification. Эти объекты описаны в разделе "Примечания" конструктора ModuleSpecification (Hashtable) в библиотеке MSDN. Например, параметр FullyQualifiedName принимает имя модуля, указанное в следующих форматах:

  • @{ModuleName = "modulename"; ModuleVersion = "version_number"}
  • @{ModuleName = "modulename"; ModuleVersion = "version_number"; Guid = "GUID"}

Имя модуля и ModuleVersion являются обязательными, но Guid необязателен.

Невозможно указать параметр FullyQualifiedName в той же команде, что и параметр Name.

Тип:ModuleSpecification[]
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:True
Принять подстановочные знаки:False

-ListAvailable

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

Тип:SwitchParameter
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-Name

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

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

Тип:String[]
Position:0
Default value:None
Обязательно:False
Принять входные данные конвейера:True
Принять подстановочные знаки:True

-PSSession

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

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

Команда , использующая параметр PSSession , эквивалентна использованию командлета для выполнения команды в 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

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

String

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

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

PSModuleInfo

Этот командлет возвращает объекты, представляющие модули. При указании параметра ListAvailable возвращает объект 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 в библиотеке MSDN.

  • Get-Module получает модули только в расположениях, хранящихся в значении переменной среды PSModulePath ($env:PSModulePath). Вы можете использовать параметр Path командлета Import-Module для импорта модулей в других местах, но для их получения нельзя использовать командлет Get-Module.

  • Кроме того, начиная с PowerShell 3.0, новые свойства были добавлены в объект, который Get-Module возвращает, что упрощает изучение модулей даже до их импорта. Все свойства заполняются перед импортом. К ним относятсяExportedCommands, ExportedCmdlets и ExportedFunctions свойства, которые перечисляют команды, экспортируемые модулем.

  • Параметр ListAvailable получает только хорошо сформированные модули, то есть папки, содержащие по крайней мере один файл, базовый имя которого совпадает с именем папки модуля. Базовое имя — это имя без расширения имени файла. Папки, содержащие файлы с разными именами, считаются контейнерами, но не модулями.

    Чтобы получить модули, реализованные как файлы .dll, но не заключены в папку модуля, укажите параметры ListAvailable и все.

  • Чтобы использовать функцию сеанса CIM, удаленный компьютер должен иметь WS-Management удаленного взаимодействия и инструментария управления Windows (WMI), который является реализацией стандарта Common Information Model (CIM) Майкрософт. Компьютер также должен иметь поставщик WMI обнаружения модулей или альтернативный поставщик WMI, имеющий те же основные функции.

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

    Можно также использовать параметры CIM для получения модулей CIM с компьютеров с включенным удаленного взаимодействия PowerShell. Это включает локальный компьютер. При создании сеанса CIM на локальном компьютере PowerShell использует DCOM вместо WMI для создания сеанса.