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
для получения и импорта модулей CIM, в которых командлеты определяются в XML-файлах определения командлетов (CDXML).
Эта функция позволяет использовать командлеты, реализованные в неуправляемых сборках кода, например, написанных на C++.
Благодаря этим новым функциям командлеты и Import-Module
становятся основными инструментами для управления разнородными предприятиями, Get-Module
которые включают компьютеры под управлением операционной системы Windows и компьютеры под управлением других операционных систем.
Чтобы управлять удаленными компьютерами под управлением операционной системы Windows с включенным удаленным взаимодействием PowerShell и PowerShell, создайте psSession на удаленном компьютере, а затем используйте параметр PSSession для Get-Module
получения модулей PowerShell в PSSession.
При импорте модулей и использовании импортированных команд в текущем сеансе команды выполняются неявно в PSSession на удаленном компьютере.
С помощью этой стратегии можно управлять удаленным компьютером.
Аналогичную стратегию можно использовать для управления компьютерами, на которых не включено удаленное взаимодействие 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. Получение модуля по его полному имени
$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
Эта команда получает свойства возвращаемого объекта 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 указывается модуль хранения. Команда использует оператор конвейера (|) для отправки модуля storage в 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 Constructor (Hashtable) библиотеки MSDN. Например, параметр FullyQualifiedName принимает имя модуля, указанное в следующих форматах:
- @{ModuleName = "modulename"; ModuleVersion = "version_number"}
- @{ModuleName = "modulename"; ModuleVersion = "version_number"; Guid = "GUID"}
Параметры ModuleName и ModuleVersion обязательны, а Guid — нет.
Параметр FullyQualifiedName нельзя указать в той же команде, что и параметр Name .
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 |
-PSSession
Возвращает модули в указанном сеансе PowerShell, управляемом пользователем (PSSession).
Введите переменную, содержащую сеанс, команду, которая получает сеанс, например Get-PSSession
команду, или команду, создающую сеанс, например New-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 |
Входные данные
Вы можете передать имена модулей в этот командлет.
Выходные данные
Этот командлет возвращает объекты, представляющие модули.
При указании параметра Get-Module
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 и All .
Для использования функции сеанса CIM на удаленном компьютере должен быть установлен компонент удаленного взаимодействия WS-Management и инструментарий управления Windows (WMI), который представляет собой реализацию стандарта CIM корпорации Майкрософт. На компьютере должен быть также поставщик WMI обнаружения модулей или другой поставщик WMI с теми же основными возможностями.
Функцию сеанса CIM можно использовать на компьютерах, не работающих под управлением операционной системы Windows, и на компьютерах Windows с PowerShell, на которых не включено удаленное взаимодействие PowerShell.
Вы также можете использовать параметры CIM для получения модулей CIM с компьютеров, на которых включено удаленное взаимодействие PowerShell. Сюда входит локальный компьютер. При создании сеанса CIM на локальном компьютере PowerShell использует для создания сеанса DCOM вместо WMI.