about_Module_Manifests
Краткое описание
Описывает параметры и рекомендации по написанию файлов манифеста модуля.
Подробное описание
Манифест модуля — это файл данных PowerShell (.psd1
), содержащий хэш-таблицу.
Пары "ключ-значение" в хэш-таблице описывают содержимое и атрибуты модуля, определяют предварительные требования и управляют процессом обработки компонентов.
Манифесты не требуются для загрузки модуля, но они необходимы для публикации модуля в коллекция PowerShell. Манифесты также позволяют отделять реализацию модуля от того, как она загружается. С помощью манифеста можно определить требования, совместимость, порядок загрузки и многое другое.
При использовании New-ModuleManifest
без указания параметров манифеста он записывает минимальный файл манифеста. В приведенном ниже фрагменте показано, как вы ознакомитесь с выходными данными по умолчанию, фрагментами комментариев и интервалами для краткости:
@{
# RootModule = ''
ModuleVersion = '1.0'
# CompatiblePSEditions = @()
GUID = 'e7184b71-2527-469f-a50e-166b612dfb3b'
Author = 'username'
CompanyName = 'Unknown'
Copyright = '(c) 2022 username. All rights reserved.'
# Description = ''
# PowerShellVersion = ''
# PowerShellHostName = ''
# PowerShellHostVersion = ''
# DotNetFrameworkVersion = ''
# CLRVersion = ''
# ProcessorArchitecture = ''
# RequiredModules = @()
# RequiredAssemblies = @()
# ScriptsToProcess = @()
# TypesToProcess = @()
# FormatsToProcess = @()
# NestedModules = @()
FunctionsToExport = @()
CmdletsToExport = @()
VariablesToExport = '*'
AliasesToExport = @()
# DscResourcesToExport = @()
# ModuleList = @()
# FileList = @()
PrivateData = @{
PSData = @{
# Tags = @()
# LicenseUri = ''
# ProjectUri = ''
# IconUri = ''
# ReleaseNotes = ''
} # End of PSData hashtable
} # End of PrivateData hashtable
# HelpInfoURI = ''
# DefaultCommandPrefix = ''
}
Перед публикацией модуля можно использовать Test-ModuleManifest
для проверки манифеста модуля. Test-ModuleManifest
возвращает ошибку, если манифест недопустим или модуль не может быть импортирован в текущий сеанс, так как сеанс не соответствует требованиям, заданным в манифесте.
Использование кода скрипта в манифесте модуля
Значения, назначенные параметрам в файле манифеста, могут быть выражениями, которые оцениваются PowerShell. Это позволяет создавать пути и условно назначать значения на основе переменных.
При импорте модуля с помощью Import-Module
манифеста вычисляется в Restricted
языковом режиме. Restricted
режим ограничивает команды и переменные, которые можно использовать.
Разрешенные команды
Import-LocalizedData
ConvertFrom-StringData
Write-Host
Out-Host
Join-Path
Допустимые переменные
$PSScriptRoot
$PSEdition
$EnabledExperimentalFeatures
- Любые переменные среды, например
$ENV:TEMP
Дополнительные сведения см. в about_Language_Modes.
Параметры манифеста
В следующих разделах подробно описаны все доступные параметры в манифесте модуля и их использование. Они начинаются с синоптиса параметра и следуют матрице, которая перечисляет:
- Тип входных данных: тип объекта, который можно указать для этого параметра в манифесте.
- Обязательный: если это значение
Yes
, параметр требуется как для импорта модуля, так и для публикации его в коллекция PowerShell. Если этоNo
так, это не требуется. Если этоPowerShell Gallery
так, это необходимо только для публикации в коллекция PowerShell. - Значение, если не задано: значение этого параметра имеет значение при импорте и не явном задании.
- Принимает дикие карта: может ли этот параметр принимать дикое карта значение или нет.
RootModule
Этот параметр задает основной или корневой файл модуля. При импорте модуля члены, экспортированные корневым файлом модуля, импортируются в состояние сеанса вызывающего объекта.
Значение | |
---|---|
Тип входных данных | System.String |
Обязательный | No |
Значение, если не задано | $null |
Принимает дикие карта | No |
Значение должно быть путем к одному из следующих значений:
- скрипт (
.ps1
) - модуль скрипта (
.psm1
) - манифест модуля (
.psd1
) - сборка (
.dll
) - XML-файл определения командлета (
.cdxml
) - Рабочий процесс Windows PowerShell 5.1 (
.xaml
)
Путь должен быть относительно манифеста модуля.
Если манифест модуля не имеет корневого файла в ключе RootModule , манифест становится основным файлом для модуля, а модуль становится модулем манифеста (ModuleType = Manifest). При определении RootModule тип модуля определяется из используемого расширения файла:
.psm1
Или.ps1
файл делает тип модуля скриптом.psd1
Файл делает манифест типа модуля.dll
Файл делает тип модуля binary.cdxml
Файл делает тип модуля CIM- Файл делает рабочий
.xaml
процесс типа модуля
По умолчанию экспортируются все члены модуля в RootModule .
Совет
Скорость загрузки модуля отличается между типами модулей Binary, Script и CIM . Дополнительные сведения см. в статье о разработке модуля PowerShell
Например, модуль этого модуля является манифестом. Единственными элементами модуля, которые этот модуль может экспортировать, являются те, которые определены в модулях, указанных с параметром NestedModules .
@{
RootModule = ''
}
Примечание.
Этот параметр также можно указать в манифестах модуля в виде ModuleToProcess. Хотя это имя для этого параметра является допустимым, рекомендуется использовать RootModule .
ModuleVersion
Этот параметр задает версию модуля. Если в системе существует несколько версий модуля, последняя версия загружается по умолчанию при запуске Import-Module
.
Значение | |
---|---|
Тип входных данных | System.String |
Обязательный | Да |
Значение, если не задано | нет |
Принимает дикие карта | No |
Значение этого параметра должно быть преобразовано во System.Version
время выполнения Import-Module
.
Например, этот манифест объявляет версию модуля как '1.2.3'
.
@{
ModuleVersion = '1.2.3'
}
При импорте модуля и проверке свойства Version обратите внимание, что это объект System.Version, а не строка:
$ExampleModule = Import-Module example.psd1
$ExampleModule.Version
$ExampleModule.Version.GetType().Name
Major Minor Build Revision
----- ----- ----- --------
1 2 3 -1
Version
CompatiblePSEditions
Этот параметр задает совместимые PSEditions модуля.
Значение | |
---|---|
Тип входных данных | System.String[] |
Принятые значения | Desktop , Core |
Обязательный | No |
Значение, если не задано | $null |
Принимает дикие карта | No |
Если значение этого параметра равно $null
, модуль можно импортировать независимо от PSEdition сеанса. Его можно задать для одного или нескольких принятых значений.
Дополнительные сведения о PSEdition см. в следующем разделе:
Если этот параметр определен, модуль можно импортировать только в сеанс, где $PSEdition
значение автоматической переменной включено в параметр.
Примечание.
Так как автоматическая $PSEdition
переменная появилась в версии 5.1, старые версии Windows PowerShell не могут загрузить модуль, использующий параметр CompatiblePSEditions .
Например, этот манифест модуля можно импортировать в любой сеанс:
@{
# CompatiblePSEditions = @()
}
Если задан параметр, этот модуль можно импортировать только в сеансах, где значение автоматической $PSEdition
переменной равно Core
.
@{
CompatiblePSEditions = @('Core')
}
GUID
Этот параметр задает уникальный идентификатор модуля. GUID используется для различения модулей с одинаковым именем.
Значение | |
---|---|
Тип входных данных | System.String |
Обязательный | No |
Значение, если не задано | 00000000-0000-0000-0000-000000000000 |
Принимает дикие карта | No |
Значение этого параметра должно быть преобразовано во System.Guid
время выполнения Import-Module
.
Внимание
Хотя это не обязательный параметр, не указывая GUID в манифесте, не имеет преимуществ и может привести к столкновениям имен для модулей.
Вы можете создать новый guid для использования в манифесте:
New-Guid | Select-Object -ExpandProperty Guid
8456b025-2fa5-4034-ae47-e6305f3917ca
@{
GUID = '8456b025-2fa5-4034-ae47-e6305f3917ca'
}
Если на компьютере есть другой модуль с тем же именем, вы по-прежнему можете импортировать нужный модуль, указав полное имя модуля:
Import-Module -FullyQualifiedName @{
ModuleName = 'Example'
GUID = '8456b025-2fa5-4034-ae47-e6305f3917ca'
ModuleVersion = '1.0.0'
}
Автор
Этот параметр определяет автора модуля.
Значение | |
---|---|
Тип входных данных | System.String |
Обязательный | Коллекция PowerShell |
Значение, если не задано | $null |
Принимает дикие карта | No |
Этот манифест объявляет, что автор модуля является командой разработчиков Contoso.
@{
Author = 'Contoso Developer Experience Team'
}
CompanyName
Этот параметр определяет компанию или поставщика, создавшего модуль.
Значение | |
---|---|
Тип входных данных | System.String |
Обязательный | No |
Значение, если не задано | $null |
Принимает дикие карта | No |
Этот манифест объявляет, что модуль был создан Contoso, Ltd.
@{
CompanyName = 'Contoso, Ltd.'
}
Авторские права
Этот параметр задает заявление об авторских правах для модуля.
Значение | |
---|---|
Тип входных данных | System.String |
Обязательный | No |
Значение, если не задано | $null |
Принимает дикие карта | No |
Этот манифест объявляет заявление об авторских правах, резервируя все права компании Contoso, Ltd. по состоянию на 2022 год.
@{
Copyright = '(c) 2022 Contoso, Ltd. All rights reserved.'
}
Description
Этот параметр описывает модуль на высоком уровне.
Значение | |
---|---|
Тип входных данных | System.String |
Обязательный | Коллекция PowerShell |
Значение, если не задано | $null |
Принимает дикие карта | No |
Этот манифест содержит краткое описание. Вы также можете использовать строку здесь для записи более длинного или многострочный описания.
@{
Description = 'Example commands to show a valid module manifest'
}
PowerShellVersion
Этот параметр задает минимальную версию PowerShell, требуемую для этого модуля.
Значение | |
---|---|
Тип входных данных | System.String |
Обязательный | No |
Значение, если не задано | $null |
Принимает дикие карта | No |
Значение этого параметра должно быть преобразовано во System.Version
время выполнения Import-Module
.
Если этот параметр не задан, PowerShell не ограничивает импорт модуля на основе текущей версии.
Например, этот манифест объявляет, что модуль совместим с каждой версией PowerShell и Windows PowerShell.
@{
# PowerShellVersion = ''
}
Если задано значение 7.2
PowerShellVersion, модуль можно импортировать только в PowerShell 7.2 или более поздней версии.
@{
PowerShellVersion = '7.2'
}
PowerShellHostName
Этот параметр задает имя конечной программы PowerShell, которую требует модуль, например узел интегрированной среды сценариев Windows PowerShell или ConsoleHost.
Значение | |
---|---|
Тип входных данных | System.String |
Обязательный | No |
Значение, если не задано | $null |
Принимает дикие карта | No |
Имя узла для сеанса можно найти с помощью инструкции $Host.Name
. Например, можно увидеть, что узел для удаленного сеанса — ServerRemoteHost вместо ConsoleHost:
$Host.Name
Enter-PSSession -ComputerName localhost
$Host.Name
ConsoleHost
[localhost]: PS C:\Users\username\Documents> $Host.Name
ServerRemoteHost
Этот модуль можно импортировать в любой узел.
@{
# PowerShellHostName = ''
}
Если задано ServerRemoteHost
значение PowerShellHostName, модуль можно импортировать только в удаленном сеансе PowerShell.
@{
PowerShellHostName = 'ServerRemoteHost'
}
PowerShellHostVersion
Этот параметр задает минимальную версию конечной программы PowerShell, которую требует модуль.
Значение | |
---|---|
Тип входных данных | System.String |
Обязательный | No |
Значение, если не задано | $null |
Принимает дикие карта | No |
Значение этого параметра должно быть преобразовано во System.Version
время выполнения Import-Module
.
Внимание
Хотя этот параметр можно использовать без параметра PowerShellHostName , он повышает вероятность неожиданного поведения. Используйте этот параметр только при использовании параметра PowerShellHostName .
Например, модуль этого манифеста можно импортировать из любого сеанса PowerShell, работающего в ConsoleHost, независимо от версии узла.
@{
PowerShellHostName = 'ConsoleHost'
# PowerShellHostVersion = ''
}
Если задано значение 5.1
PowerShellHostVersion, модуль можно импортировать только из любого сеанса PowerShell, работающего в ConsoleHost, где версия узла — 5.1 или более поздняя.
@{
PowerShellHostName = 'ConsoleHost'
PowerShellHostVersion = '5.1'
}
DotNetFrameworkVersion
Этот параметр задает минимальную версию microsoft платформа .NET Framework, которую требует модуль.
Значение | |
---|---|
Тип входных данных | System.String |
Обязательный | No |
Значение, если не задано | $null |
Принимает дикие карта | No |
Примечание.
Этот параметр действителен только для выпуска PowerShell Desktop, например Windows PowerShell 5.1, и применяется только к платформа .NET Framework версиям ниже 4.5. Это требование не влияет на более новые версии PowerShell или платформа .NET Framework.
Значение этого параметра должно быть преобразовано во System.Version
время выполнения Import-Module
.
Например, этот манифест объявляет, что его модуль можно импортировать в любой сеанс PowerShell или Windows PowerShell независимо от версии Microsoft платформа .NET Framework.
@{
# DotNetFrameworkVersion = ''
}
Если задано 4.0
значение DotNetFrameworkVersion, этот модуль можно импортировать в любой сеанс Windows PowerShell, где последняя доступная версия Microsoft платформа .NET Framework не менее 4.0. Вы также можете импортировать его в любой сеанс PowerShell.
@{
DotNetFrameworkVersion = '4.0'
}
CLRVersion
Этот параметр задает минимальную версию среды CLR (CLR) microsoft платформа .NET Framework, которую требует модуль.
Значение | |
---|---|
Тип входных данных | System.String |
Обязательный | No |
Значение, если не задано | $null |
Принимает дикие карта | No |
Примечание.
Этот параметр действителен только для выпуска PowerShell Desktop, например Windows PowerShell 5.1, и применяется только к платформа .NET Framework версиям ниже 4.5. Это требование не влияет на более новые версии PowerShell или платформа .NET Framework.
Значение этого параметра должно быть преобразовано во System.Version
время выполнения Import-Module
.
Например, этот манифест объявляет, что его модуль можно импортировать в любой сеанс PowerShell или Windows PowerShell независимо от версии среды CLR microsoft платформа .NET Framework.
@{
# CLRVersion = ''
}
Если задано значение 4.0
CLRVersion, этот модуль можно импортировать в любой сеанс Windows PowerShell, где последняя доступная версия среды CLR не менее 4.0. Вы также можете импортировать его в любой сеанс PowerShell.
@{
CLRVersion = '4.0'
}
ProcessorArchitecture
Этот параметр задает архитектуру процессора, требуемую модулем.
Значение | |
---|---|
Тип входных данных | System.String |
Принятые значения | None , , MSIL IA64 X86 Amd64 ,Arm |
Обязательный | No |
Значение, если не задано | None |
Принимает дикие карта | No |
Значение этого параметра должно быть преобразовано во System.Reflection.ProcessorArchitecture
время выполнения Import-Module
.
Например, этот манифест объявляет, что его модуль можно импортировать в любой сеанс независимо от архитектуры процессора системы.
@{
# ProcessorArchitecture = ''
}
Если задано значение Amd64
ProcessorArchitecture, этот модуль можно импортировать только в сеансе, работающем на компьютере с соответствующей архитектурой.
@{
ProcessorArchitecture = 'Amd64'
}
RequiredModules
Этот параметр задает модули, которые должны находиться в состоянии глобального сеанса. Если необходимые модули не в состоянии глобального сеанса, PowerShell импортирует их.
Если необходимые модули недоступны, команда завершается ошибкой Import-Module
.
Значение | |
---|---|
Тип входных данных | System.String[] , System.Collections.Hashtable[] |
Обязательный | No |
Значение, если не задано | $null |
Принимает дикие карта | No |
Записи для этого параметра могут быть именем модуля, полной спецификацией модуля или путем к файлу модуля.
Если значение является путем, путь может быть полностью или относительным.
Если значение является спецификацией имени или модуля, PowerShell выполняет поиск в PSModulePath для указанного модуля.
Спецификация модуля — это хэш-таблица со следующими ключами.
ModuleName
- Необходимые. Указывает имя модуля.GUID
- Необязательно. Указывает GUID модуля.- Также требуется указать по крайней мере один из трех приведенных ниже ключей.
RequiredVersion
Ключ нельзя использовать с ключамиModuleVersion
илиMaximumVersion
ключами. Можно определить допустимый диапазон версий для модуля, указавModuleVersion
вместе ключи иMaximumVersion
ключи.ModuleVersion
— задает минимальную допустимую версию модуля.RequiredVersion
— указывает точную, требуемую версию модуля.MaximumVersion
— задает максимальную допустимую версию модуля.
Примечание.
RequiredVersion
добавлен в Windows PowerShell 5.0.
MaximumVersion
добавлен в Windows PowerShell 5.1.
Например, этот манифест объявляет, что его модуль не требует каких-либо других модулей для его функциональных возможностей.
@{
# RequiredModules = @()
}
Этот манифест объявляет, что для него требуется модуль PSReadLine. При запуске Import-Module
этого манифеста PowerShell импортирует последнюю версию PSReadLine, доступную для сеанса. Если версия недоступна, импорт возвращает ошибку.
@{
RequiredModules = @(
'PSReadLine'
)
}
Совет
В PowerShell 2.0 Import-Module
не импортирует необходимые модули автоматически. Он проверяет, находятся ли необходимые модули только в состоянии глобального сеанса.
Этот манифест объявляет, что для него требуется версия модуля PSReadLine, поставщика в собственной папке модуля. При запуске Import-Module
этого манифеста PowerShell импортирует поставщик PSReadLine из указанного пути.
@{
RequiredModules = @(
'Vendored\PSReadLine\PSReadLine.psd1'
)
}
Этот манифест объявляет, что для него требуется версия 2.0.0 модуля PSReadLine. При запуске Import-Module
этого манифеста PowerShell импортирует версию 2.0.0 PSReadLine, если она доступна. Если он недоступен, Import-Module
возвращает ошибку.
@{
RequiredModules = @(
@{
ModuleName = 'PSReadLine'
RequiredVersion = '2.0.0'
}
)
}
Этот манифест объявляет, что он требует, чтобы модуль PSReadLine был импортирован в версии 2.0.0 или выше.
@{
RequiredModules = @(
@{
ModuleName = 'PSReadLine'
ModuleVersion = '2.0.0'
}
)
}
Этот манифест объявляет, что он требует, чтобы модуль PSReadLine был импортирован в версии 2.0.0 или ниже.
@{
RequiredModules = @(
@{
ModuleName = 'PSReadLine'
MaximumVersion = '2.0.0'
}
)
}
Этот манифест объявляет, что он требует, чтобы модуль PSDesiredStateConfiguration импортировался в версии, равной или выше 2.0.0, но не выше 2.99.99.
@{
RequiredModules = @(
@{
ModuleName = 'PSDesiredStateConfiguration'
ModuleVersion = '2.0.0'
MaximumVersion = '2.99.99'
}
)
}
RequiredAssemblies
Этот параметр указывает необходимые для модуля файлы сборки (.dll
).
PowerShell загружает указанные сборки перед обновлением типов или форматов, импортом вложенных модулей или импортом файла модуля, указанного в значении ключа RootModule .
Значение | |
---|---|
Тип входных данных | System.String[] |
Обязательный | No |
Значение, если не задано | $null |
Принимает дикие карта | No |
Записи для этого параметра могут быть именем файла сборки или пути к одному. Перечислить все необходимые сборки, даже если они также перечислены как двоичные модули в параметре NestedModules .
Для этого манифеста требуется сборка example.dll
. Перед загрузкой любых файлов форматирования или типов, указанных в этом манифесте, PowerShell загружается example.dll
из Assemblies
папки, расположенной в том же каталоге, что и манифест модуля.
@{
RequiredAssemblies = @(
'Assemblies\Example.dll'
)
}
ScriptsToProcess
Этот параметр задает файлы скриптов ,.ps1
которые выполняются в состоянии сеанса вызывающего объекта при импорте модуля. Эти скрипты можно использовать для подготовки среды таким же образом, как и скрипт входа в систему.
Значение | |
---|---|
Тип входных данных | System.String[] |
Обязательный | No |
Значение, если не задано | $null |
Принимает дикие карта | No |
Чтобы указать сценарии, которые выполняются в состоянии сеанса модуля, используйте ключ NestedModules .
При импорте этого манифеста PowerShell запускается Initialize.ps1
в текущем сеансе.
@{
ScriptsToProcess = @(
'Scripts\Initialize.ps1'
)
}
Например, если Initialize.ps1
записывает информационные сообщения и задает $ExampleState
переменную:
if ([string]::IsNullOrEmpty($ExampleState)) {
Write-Information "Example not initialized."
Write-Information "Initializing now..."
$ExampleState = 'Initialized'
} else {
Write-Information "Example already initialized."
}
При импорте модуля скрипт запускается, записывает эти сообщения и задает его $ExampleState
в сеансе.
$InformationPreference = 'Continue'
"Example State is: $ExampleState"
Import-Module .\example7x.psd1
"Example State is: $ExampleState"
Import-Module .\example7x.psd1 -Force
Example State is:
Example not initialized.
Initializing now...
Example State is: Initialized
Example already initialized.
TypesToProcess
Этот параметр указывает файлы типов ,.ps1xml
которые выполняются при импорте модуля.
Значение | |
---|---|
Тип входных данных | System.String[] |
Обязательный | No |
Значение, если не задано | $null |
Принимает дикие карта | No |
При импорте модуля PowerShell запускает Update-TypeData
командлет с указанными файлами. Так как файлы типов не область, они влияют на все состояния сеанса в сеансе.
Дополнительные сведения о файлах типов см. в разделе about_Types.ps1xml
Например, при импорте этого манифеста PowerShell загружает типы, указанные в Example.ps1xml
файле из Types
папки, расположенной в том же каталоге, что и манифест модуля.
@{
TypesToProcess = @(
'Types\Example.ps1xml'
)
}
ФорматыToProcess
Этот параметр задает файлы форматирования (.ps1xml
), которые выполняются при импорте модуля.
Значение | |
---|---|
Тип входных данных | System.String[] |
Обязательный | No |
Значение, если не задано | $null |
Принимает дикие карта | No |
При импорте модуля PowerShell запускает Update-FormatData
командлет с указанными файлами. Так как файлы форматирования не область, они влияют на все состояния сеанса в сеансе.
Дополнительные сведения о файлах типов см. в разделе about_Format.ps1xml
Например, при импорте этого модуля PowerShell загружает форматы, указанные в Example.ps1xml
файле из Formats
папки, расположенной в том же каталоге, что и манифест модуля.
@{
FormatsToProcess = @(
'Formats\Example.ps1xml'
)
}
Вложенныеmodules
Этот параметр задает модули скриптов () и двоичные модули (.psm1
.dll
), импортированные в состояние сеанса модуля. Можно также указать файлы скриптов (.ps1
). Файлы в этом параметре выполняются в том порядке, в котором они перечислены.
Значение | |
---|---|
Тип входных данных | System.String[] , System.Collections.Hashtable[] |
Обязательный | No |
Значение, если не задано | $null |
Принимает дикие карта | No |
Записи для этого параметра могут быть именем модуля, полной спецификацией модуля или путем к файлу модуля или скрипта.
Если значение является путем, путь может быть полностью или относительным.
Если значение является именем модуля или спецификацией, PowerShell выполняет поиск в PSModulePath для указанного модуля.
Спецификация модуля — это хэш-таблица со следующими ключами.
ModuleName
- Необходимые. Указывает имя модуля.GUID
- Необязательно. Указывает GUID модуля.- Также требуется указать по крайней мере один из трех приведенных ниже ключей.
RequiredVersion
Ключ нельзя использовать с ключамиModuleVersion
илиMaximumVersion
ключами. Можно определить допустимый диапазон версий для модуля, указавModuleVersion
вместе ключи иMaximumVersion
ключи.ModuleVersion
— задает минимальную допустимую версию модуля.RequiredVersion
— указывает точную, требуемую версию модуля.MaximumVersion
— задает максимальную допустимую версию модуля.
Примечание.
RequiredVersion
добавлен в Windows PowerShell 5.0.
MaximumVersion
добавлен в Windows PowerShell 5.1.
Все элементы, которые необходимо экспортировать из вложенного модуля, должны быть экспортированы вложенным модулем с помощью Export-ModuleMember
командлета или перечислены в одном из свойств экспорта:
- FunctionsToExport
- КомандлетыToExport
- ПеременныеToExport
- AliasesToExport
Вложенные модули в состоянии сеанса модуля доступны корневому модулю, но они не возвращаются Get-Module
командой в состоянии сеанса вызывающего объекта.
Скрипты (.ps1
), перечисленные в этом параметре, выполняются в состоянии сеанса модуля, а не в состоянии сеанса вызывающего объекта. Чтобы запустить скрипт в состоянии сеанса вызывающего объекта, укажите имя файла скрипта в параметре ScriptsToProcess .
Например, при импорте этого манифеста Helpers.psm1
модуль загружается в состояние сеанса корневого модуля. Все командлеты, объявленные в вложенном модуле, экспортируются, если иное не ограничено.
@{
NestedModules = @(
'Helpers\Helpers.psm1'
)
}
FunctionsToExport
Этот параметр задает функции, экспортируемые модулем. Этот параметр можно использовать для ограничения функций, экспортируемых модулем. Он может удалить функции из списка экспортированных функций, но он не может добавлять функции в список.
Значение | |
---|---|
Тип входных данных | System.String[] |
Обязательный | No |
Значение, если не задано | $null |
Принимает дикие карта | Да |
В этом параметре можно указать записи с помощью wild карта s. Экспортируются все соответствующие функции в списке экспортированных функций.
Совет
Для повышения производительности и возможности обнаружения всегда следует явно перечислять функции, которые нужно экспортировать в этом параметре, не используя дикие карта.
Например, при импорте модуля с закомментированным параметром все функции в корневом модуле и все вложенные модули экспортируются.
@{
# FunctionsToExport = @()
}
Этот манифест функционально идентичен указанию параметра вообще.
@{
FunctionsToExport = '*'
}
При использовании FunctionsToExport , заданного как пустой массив, при импорте этого модуля не доступны функции корневого модуля или экспорта вложенных модулей.
@{
FunctionsToExport = @()
}
Примечание.
Если вы создаете манифест модуля с New-ModuleManifest
помощью команды и не указываете параметр FunctionsToExport , созданный манифест имеет этот параметр, указанный в качестве пустого массива. Если манифест не редактируется, никакие функции из модуля не экспортируются.
При импорте этого модуля функция имеет значение FunctionToExport , доступная только Get-Example
Get-Example
при импорте этого модуля, даже если другие функции экспортируются корневым модулем или любыми вложенными модулями.
@{
FunctionsToExport = @(
'Get-Example'
)
}
При использовании функции FunctionsToExport с дикой строкой карта при импорте этой функции любой функции, имя которой заканчивается Example
доступным, даже если другие функции экспортируются в качестве членов модуля корневым модулем или любыми вложенными модулями.
@{
FunctionsToExport = @(
'*Example'
)
}
КомандлетыToExport
Этот параметр указывает командлеты, экспортируемые модулем. Этот параметр можно использовать для ограничения командлетов, экспортируемых модулем. Он может удалить командлеты из списка экспортированных участников модуля, но он не может добавлять командлеты в список.
Значение | |
---|---|
Тип входных данных | System.String[] |
Обязательный | No |
Значение, если не задано | $null |
Принимает дикие карта | Да |
В этом параметре можно указать записи с помощью wild карта s. Экспортируются все соответствующие командлеты в списке экспортированных командлетов.
Совет
Для повышения производительности и возможности обнаружения всегда следует явно перечислить командлеты, которые нужно экспортировать в этом параметре без использования диких карта.
Например, при импорте модуля с этим параметром закомментировано, экспортируются все командлеты в корневом модуле и все вложенные модули.
@{
# CmdletsToExport = @()
}
Этот манифест функционально идентичен указанию параметра вообще.
@{
CmdletsToExport = '*'
}
При импорте этого модуля командлетыToExport в качестве пустого массива отсутствуют командлеты корневого модуля или экспорт вложенных модулей.
@{
CmdletsToExport = @()
}
Примечание.
Если вы создаете манифест модуля с New-ModuleManifest
помощью команды и не указываете параметр CommandsToExport , созданный манифест имеет этот параметр, указанный в качестве пустого массива. Если манифест не редактируется, из модуля не экспортируются командлеты.
Если для командлетовToExport задано значение только для включения Get-Example
командлета, при импорте этого модуля становится доступным, даже если другие командлеты экспортируются корневым модулем Get-Example
или любыми вложенными модулями.
@{
CmdletsToExport = @(
'Get-Example'
)
}
При импорте этого модуля любо карта й командлет, имя которого заканчивается Example
доступным, если другие командлеты экспортируются как члены модуля корневым модулем или любым вложенным модулем.
@{
CmdletsToExport = @(
'*Example'
)
}
ПеременныеToExport
Этот параметр задает переменные, экспортируемые модулем. Этот параметр можно использовать для ограничения переменных, экспортируемых модулем. Он может удалить переменные из списка экспортированных элементов модуля, но он не может добавлять переменные в список.
Значение | |
---|---|
Тип входных данных | System.String[] |
Обязательный | No |
Значение, если не задано | $null |
Принимает дикие карта | Да |
В этом параметре можно указать записи с помощью wild карта s. Экспортируются все соответствующие переменные в списке экспортированных элементов модуля.
Совет
Для повышения производительности и возможности обнаружения всегда следует явно перечислять переменные, которые нужно экспортировать в этом параметре, не используя дикие карта.
Например, при импорте модуля с комментарием этого параметра все переменные в корневом модуле и все вложенные модули экспортируются.
@{
# VariablesToExport = @()
}
Этот манифест функционально идентичен указанию параметра вообще.
@{
VariablesToExport = '*'
}
Примечание.
Если вы создаете манифест модуля с New-ModuleManifest
помощью команды и не указываете параметр VariablesToExport , созданный манифест имеет этот параметр, указанный как '*'
. Если манифест не редактируется, все переменные из модуля экспортируются.
При использовании ПеременныхToExport , заданного как пустой массив, при импорте этого модуля не доступны переменные корневого модуля или экспорта вложенных модулей.
@{
VariablesToExport = @()
}
Если параметр VariableToExport имеет значение только для включения SomeExample
переменной, при импорте этого модуля становится доступным только $SomeExample
переменная, даже если другие переменные экспортируются корневым модулем или любыми вложенными модулями.
@{
VariablesToExport = @(
'SomeExample'
)
}
При установке ПеременныхToExport с дикой строкой карта при импорте этой переменной, имя которой заканчивается Example
доступным, даже если другие переменные экспортируются в качестве членов модуля корневого модуля или любых вложенных модулей.
@{
VariablesToExport = @(
'*Example'
)
}
DscResourcesToExport
Этот параметр указывает ресурсы DSC, экспортируемые модулем. Этот параметр можно использовать для ограничения ресурсов DSC на основе классов, экспортированных модулем. Он может удалить ресурсы DSC из списка экспортированных элементов модуля, но он не может добавить ресурсы DSC в список.
Значение | |
---|---|
Тип входных данных | System.String[] |
Обязательный | No |
Значение, если не задано | $null |
Принимает дикие карта | Да |
В этом параметре можно указать записи с помощью wild карта s. Экспортируются все соответствующие ресурсы DSC на основе классов в модуле.
Совет
Для обнаружения необходимо всегда явно перечислить все ресурсы DSC, экспортируемые модулем.
Дополнительные сведения о разработке и использовании ресурсов DSC см. в документации по DSC.
Этот манифест экспортирует все ресурсы DSC на основе классов и MOF, определенные в корневом модуле и всех вложенных модулях.
@{
# DscResourcesToExport = @()
}
Этот манифест экспортирует все ресурсы DSC на основе MOF, определенные в корневом модуле и всех вложенных модулях, но только один ресурс DSC ExampleClassResource
на основе класса.
@{
DscResourcesToExport = @(
'ExampleClassResource'
)
}
Этот манифест экспортирует все ресурсы DSC, которые он включает. Даже если ресурс на основе MOF не указан, модуль по-прежнему экспортирует его.
@{
DscResourcesToExport = @(
'ExampleClassResource'
'ExampleMofResourceFirst'
)
}
ModuleList
Этот параметр представляет собой информационный список инвентаризации модулей, включенных в этот параметр. Этот список не влияет на поведение модуля.
Значение | |
---|---|
Тип входных данных | System.String[] , System.Collections.Hashtable[] |
Обязательный | No |
Значение, если не задано | $null |
Принимает дикие карта | No |
Записи для этого параметра могут быть именем модуля, полной спецификацией модуля или путем к файлу модуля или скрипта.
Если значение является путем, путь может быть полностью или относительным.
Если значение является именем модуля или спецификацией, PowerShell выполняет поиск в PSModulePath для указанного модуля.
Спецификация модуля — это хэш-таблица со следующими ключами.
ModuleName
- Необходимые. Указывает имя модуля.GUID
- Необязательно. Указывает GUID модуля.- Также требуется указать по крайней мере один из трех приведенных ниже ключей.
RequiredVersion
Ключ нельзя использовать с ключамиModuleVersion
илиMaximumVersion
ключами. Можно определить допустимый диапазон версий для модуля, указавModuleVersion
вместе ключи иMaximumVersion
ключи.ModuleVersion
— задает минимальную допустимую версию модуля.RequiredVersion
— указывает точную, требуемую версию модуля.MaximumVersion
— задает максимальную допустимую версию модуля.
Примечание.
RequiredVersion
добавлен в Windows PowerShell 5.0.
MaximumVersion
добавлен в Windows PowerShell 5.1.
Этот манифест не предоставляет информационный список модулей, которые он включает. Он может или не иметь модулей. Несмотря на то, что этот параметр не указан, все модули, перечисленные в параметрах RootModule, ScriptsToProcess или NestedModules, по-прежнему работают нормально.
@{
# ModuleList = @()
}
Этот манифест объявляет, что единственными модулями, которые он включает, являются Example.psm1
подмодулы First.psm1
и Second.psm1
в папке Submodules
.
@{
ModuleList = @(
'Example.psm1'
'Submodules\First.psm1'
'Submodules\Second.psm1'
)
}
Список файлов
Этот параметр представляет собой информационный список инвентаризации файлов, включенных в этот модуль. Этот список не влияет на поведение модуля.
Значение | |
---|---|
Тип входных данных | System.String[] |
Обязательный | No |
Значение, если не задано | $null |
Принимает дикие карта | Да |
Записи для этого параметра должны быть относительным путем к файлу из папки, содержащей манифест модуля.
Когда пользователь вызывает Get-Module
манифест с указанным параметром, свойство FileList содержит полный путь к этим файлам, присоединяя путь модуля к относительному пути каждой записи.
Этот манифест не содержит список его файлов.
@{
# FileList = @()
}
Этот манифест объявляет, что в этом параметре перечислены только те файлы, которые он включает.
@{
FileList = @(
'Example.psd1'
'Example.psm1'
'Assemblies\Example.dll'
'Scripts\Initialize.ps1'
'Submodules\First.psm1'
'Submodules\Second.psm1'
)
}
PrivateData
Этот параметр определяет хэш-таблицу данных, доступную для любых команд или функций в область корневого модуля.
Значение | |
---|---|
Тип входных данных | System.Collections.Hashtable |
Обязательный | коллекция PowerShell, Crescendo |
Значение, если не задано | $null |
Принимает дикие карта | No |
При экспорте манифеста Crescendo для создания нового модуля Export-CrescendoModule
добавляется два ключа в PrivateData
- CrescendoGenerated — метка времени при экспорте модуля
- CrescendoVersion — версия Crescendo, используемая для экспорта модуля
Вы можете добавить собственные ключи для хранения метаданных, которые необходимо отслеживать. Все ключи, добавленные в этот параметр, доступны для функций и командлетов в корневом модуле с помощью $MyInvocation.MyCommand.Module.PrivateData
. Хэш-таблица недоступна в самом модуле область только в командлетах, которые определяются в модуле.
Например, этот манифест определяет ключ PublishedDate в PrivateData.
@{
PrivateData = @{
PublishedDate = '2022-06-01'
}
}
Командлеты в модуле могут получить доступ к этому значению с помощью переменной $MyInvocation
.
Function Get-Stale {
[CmdletBinding()]
param()
$PublishedDate = $MyInvocation.MyCommand.Module.PrivateData.PublishedDate
$CurrentDate = Get-Date
try {
$PublishedDate = Get-Date -Date $PublishedDate -ErrorAction Stop
} catch {
# The date was set in the manifest, set to an invalid value, or
# the script module was directly imported without the manifest.
Throw "Unable to determine published date. Check the module manifest."
}
if ($CurrentDate -gt $PublishedDate.AddDays(30)) {
Write-Warning "This module version was published more than 30 days ago."
} else {
$TimeUntilStale = $PublishedDate.AddDays(30) - $CurrentDate
"This module will be stale in $($TimeUntilStale.Days) days"
}
}
После импорта модуля функция использует значение из PrivateData , чтобы определить, когда модуль был опубликован.
Get-Stale -TestDate '2022-06-15'
Get-Stale -TestDate '2022-08-01'
This module will be stale in 16 days
WARNING: This module version was published more than 30 days ago.
PrivateData.PSData
Дочернее свойство PSData определяет хэш-таблицу значений, поддерживающих определенные сценарии расширения.
Значение | |
---|---|
Тип входных данных | System.Collections.Hashtable |
Обязательный | коллекция PowerShell, экспериментальные функции, модули Crescendo |
Значение, если не задано | $null |
Принимает дикие карта | No |
Дочернее свойство PSData используется для следующих сценариев:
- коллекция PowerShell. При создании манифеста модуля с помощью
New-ModuleManifest
командлета предварительно заполняется хэш-файл PSData с ключами держателя места, необходимыми при публикации модуля в коллекция PowerShell. Дополнительные сведения о манифестах модуля и публикации в коллекция PowerShell см. в разделе "Значения манифеста пакета", влияющие на пользовательский интерфейс коллекция PowerShell. - Модули Crescendo. При экспорте манифеста Crescendo для создания нового модуля
Export-CrescendoModule
добавляет значениеCrescendoBuilt
в свойство PSData.Tags . Этот тег можно использовать для поиска модулей в коллекция PowerShell, созданных с помощью Crescendo. Дополнительные сведения см. в статье Export-CrescendoModule.
HelpInfoURI
Этот параметр задает интернет-адрес XML-файла HelpInfo для модуля.
Значение | |
---|---|
Тип входных данных | System.String |
Обязательный | No |
Значение, если не задано | $null |
Принимает дикие карта | No |
Значение этого параметра должно быть универсальным идентификатором ресурса (URI), начинающимся с http или https.
XML-файл HelpInfo поддерживает обновляемую функцию справки, представленную в PowerShell 3.0. Он содержит сведения о расположении загружаемых файлов справки для модуля и номера версий последних файлов справки для каждого поддерживаемого языка.
Сведения о обновляемой справке см. в about_Updatable_Help. Сведения о XML-файле HelpInfo см. в статье "Поддержка обновляемой справки".
Например, этот модуль поддерживает обновляемую справку.
@{
HelpInfoUri = 'http://https://go.microsoft.com/fwlink/?LinkID=603'
}
DefaultCommandPrefix
Этот параметр задает префикс, который предопределен к существительным всех команд в модуле при их импорте в сеанс. Префиксы помогают предотвратить конфликты имен команд в сеансе пользователя.
Значение | |
---|---|
Тип входных данных | System.String |
Обязательный | No |
Значение, если не задано | $null |
Принимает дикие карта | No |
Пользователи модуля могут переопределить этот префикс, указав параметр префикса командлета Import-Module
.
Этот параметр появился в PowerShell 3.0.
При импорте этого манифеста все командлеты, импортированные из этого модуля Example
, были предопределены существительным в их имени. Например, Get-Item
импортируется как Get-ExampleItem
.
@{
DefaultCommandPrefix = 'Example'
}
См. также
PowerShell