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


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.2PowerShellVersion, модуль можно импортировать только в 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.1PowerShellHostVersion, модуль можно импортировать только из любого сеанса 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.0CLRVersion, этот модуль можно импортировать в любой сеанс Windows PowerShell, где последняя доступная версия среды CLR не менее 4.0. Вы также можете импортировать его в любой сеанс PowerShell.

@{
    CLRVersion = '4.0'
}

ProcessorArchitecture

Этот параметр задает архитектуру процессора, требуемую модулем.

Значение
Тип входных данных System.String
Принятые значения None, , MSILIA64X86Amd64,Arm
Обязательный No
Значение, если не задано None
Принимает дикие карта No

Значение этого параметра должно быть преобразовано во System.Reflection.ProcessorArchitecture время выполнения Import-Module.

Например, этот манифест объявляет, что его модуль можно импортировать в любой сеанс независимо от архитектуры процессора системы.

@{
    # ProcessorArchitecture = ''
}

Если задано значение Amd64ProcessorArchitecture, этот модуль можно импортировать только в сеансе, работающем на компьютере с соответствующей архитектурой.

@{
    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-ExampleGet-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'
}

См. также