New-ModuleManifest

创建新的模块清单。

语法

New-ModuleManifest
   [-Path] <String>
   [-NestedModules <Object[]>]
   [-Guid <Guid>]
   [-Author <String>]
   [-CompanyName <String>]
   [-Copyright <String>]
   [-RootModule <String>]
   [-ModuleVersion <Version>]
   [-Description <String>]
   [-ProcessorArchitecture <ProcessorArchitecture>]
   [-PowerShellVersion <Version>]
   [-CLRVersion <Version>]
   [-DotNetFrameworkVersion <Version>]
   [-PowerShellHostName <String>]
   [-PowerShellHostVersion <Version>]
   [-RequiredModules <Object[]>]
   [-TypesToProcess <String[]>]
   [-FormatsToProcess <String[]>]
   [-ScriptsToProcess <String[]>]
   [-RequiredAssemblies <String[]>]
   [-FileList <String[]>]
   [-ModuleList <Object[]>]
   [-FunctionsToExport <String[]>]
   [-AliasesToExport <String[]>]
   [-VariablesToExport <String[]>]
   [-CmdletsToExport <String[]>]
   [-DscResourcesToExport <String[]>]
   [-CompatiblePSEditions <String[]>]
   [-PrivateData <Object>]
   [-Tags <String[]>]
   [-ProjectUri <Uri>]
   [-LicenseUri <Uri>]
   [-IconUri <Uri>]
   [-ReleaseNotes <String>]
   [-Prerelease <String>]
   [-RequireLicenseAcceptance]
   [-ExternalModuleDependencies <String[]>]
   [-HelpInfoUri <String>]
   [-PassThru]
   [-DefaultCommandPrefix <String>]
   [-WhatIf]
   [-Confirm] 
   [<CommonParameters>]

说明

New-ModuleManifest cmdlet 创建一个新的模块清单 (.psd1) 文件、填充其值,并将该清单文件保存在指定的路径中。

模块作者可以使用此 cmdlet 来为其模块创建清单。 模块清单是一个包含哈希表的 .psd1 文件。 哈希表中的键和值用于描述该模块的内容和属性、定义先决条件以及确定如何处理组件。 模块并非一定需要清单。

New-ModuleManifest 创建一个包括所有常用清单键的清单,以便可以将默认输出用作清单模板。 若要添加或更改值,或者添加此 cmdlet 未添加的模块键,请在文本编辑器中打开生成的文件。

每个参数(除 PathPassThru 之外)都将创建一个模块清单键及其值。 在模块清单中,只有 ModuleVersion 键是必需的。 除非在参数说明中指明,否则如果省略该命令中的参数,New-ModuleManifest 将为关联值创建一个不起作用的注释字符串。

在 PowerShell 2.0 中,New-ModuleManifest 会提示你输入未在该命令中指定的通用参数的值,以及所需的参数值。 从 PowerShell 3.0 开始,仅当未指定必需的参数值时,New-ModuleManifest 才会发出提示。

如果计划在 PowerShell 库中发布模块,清单必须包含某些属性的值。 有关详细信息,请参阅库文档中的发布到 PowerShell 库的项的必需元数据

示例

示例 1 - 创建新的模块清单

此示例将在由 Path 参数指定的文件中创建一个新的模块清单。 PassThru 参数会将输出发送到管道和文件。

该输出显示清单中的所有键的默认值。

New-ModuleManifest -Path C:\ps-test\Test-Module\Test-Module.psd1 -PassThru

#
# Module manifest for module 'Test-Module'
#
# Generated by: ContosoAdmin
#
# Generated on: 7/12/2019
#

@{

# Script module or binary module file associated with this manifest.
# RootModule = ''

# Version number of this module.
ModuleVersion = '0.0.1'

# Supported PSEditions
# CompatiblePSEditions = @()

# ID used to uniquely identify this module
GUID = 'e1826c6e-c420-4eef-9ac8-185e3669ca6a'

# Author of this module
Author = 'ContosoAdmin'

# Company or vendor of this module
CompanyName = 'Unknown'

# Copyright statement for this module
Copyright = '(c) ContosoAdmin. All rights reserved.'

# Description of the functionality provided by this module
# Description = ''

# Minimum version of the PowerShell engine required by this module
# PowerShellVersion = ''

# Name of the PowerShell host required by this module
# PowerShellHostName = ''

# Minimum version of the PowerShell host required by this module
# PowerShellHostVersion = ''

# Minimum version of Microsoft .NET Framework required by this module. This prerequisite is valid for the PowerShell Desktop edition only.
# DotNetFrameworkVersion = ''

# Minimum version of the common language runtime (CLR) required by this module. This prerequisite is valid for the PowerShell Desktop edition only.
# CLRVersion = ''

# Processor architecture (None, X86, Amd64) required by this module
# ProcessorArchitecture = ''

# Modules that must be imported into the global environment prior to importing this module
# RequiredModules = @()

# Assemblies that must be loaded prior to importing this module
# RequiredAssemblies = @()

# Script files (.ps1) that are run in the caller's environment prior to importing this module.
# ScriptsToProcess = @()

# Type files (.ps1xml) to be loaded when importing this module
# TypesToProcess = @()

# Format files (.ps1xml) to be loaded when importing this module
# FormatsToProcess = @()

# Modules to import as nested modules of the module specified in RootModule/ModuleToProcess
# NestedModules = @()

# Functions to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no functions to export.
FunctionsToExport = @()

# Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export.
CmdletsToExport = @()

# Variables to export from this module
VariablesToExport = '*'

# Aliases to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no aliases to export.
AliasesToExport = @()

# DSC resources to export from this module
# DscResourcesToExport = @()

# List of all modules packaged with this module
# ModuleList = @()

# List of all files packaged with this module
# FileList = @()

# Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell.
PrivateData = @{

    PSData = @{

        # Tags applied to this module. These help with module discovery in online galleries.
        # Tags = @()

        # A URL to the license for this module.
        # LicenseUri = ''

        # A URL to the main website for this project.
        # ProjectUri = ''

        # A URL to an icon representing this module.
        # IconUri = ''

        # ReleaseNotes of this module
        # ReleaseNotes = ''

        # Prerelease string of this module
        # Prerelease = ''

        # Flag to indicate whether the module requires explicit user acceptance for install/update/save
        # RequireLicenseAcceptance = $false

        # External dependent modules of this module
        # ExternalModuleDependencies = @()

    } # End of PSData hashtable

} # End of PrivateData hashtable

# HelpInfo URI of this module
# HelpInfoURI = ''

# Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix.
# DefaultCommandPrefix = ''

}

示例 2 - 使用一些预填充的设置创建新清单

此示例将创建一个新的模块清单。 它使用 PowerShellVersionAliasesToExport 参数将值添加到相应的清单键。

$moduleSettings = @{
    PowerShellVersion = 1.0
    Path   = 'C:\ps-test\ManifestTest.psd1'
    AliasesToExport   = @(
      'JKBC'
      'DRC'
      'TAC'
    )
}
New-ModuleManifest @moduleSettings

示例 3 - 创建需要其他模块的清单

此示例使用字符串格式来指定 BitsTransfer 模块的名称,并使用哈希表格式来指定 PSScheduledJob 模块的名称、GUID 和版本。

$moduleSettings = @{
  RequiredModules = ("BitsTransfer", @{
    ModuleName="PSScheduledJob"
    ModuleVersion="1.0.0.0";
    GUID="50cdb55f-5ab7-489f-9e94-4ec21ff51e59"
  })
  Path = 'C:\ps-test\ManifestTest.psd1'
}
New-ModuleManifest @moduleSettings

此示例显示了如何使用 ModuleListRequiredModulesNestedModules 参数的字符串格式和哈希表格式。 可以将字符串和哈希表组合到同一参数值中。

示例 4 - 创建支持可更新的帮助的清单

此示例使用 HelpInfoUri 参数在模块清单中创建一个 HelpInfoUri 键。 该参数和该键的值必须以 httphttps 开头。 此值会向可更新帮助系统指示该模块的 HelpInfo XML 可更新帮助信息文件的位置。

$moduleSettings = @{
  HelpInfoUri = 'http://https://go.microsoft.com/fwlink/?LinkID=603'
  Path = 'C:\ps-test\ManifestTest.psd1'
}
New-ModuleManifest @moduleSettings

有关可更新的帮助的信息,请参阅 about_Updatable_Help。 有关 HelpInfo XML 文件的信息,请参阅支持可更新的帮助

示例 5 - 获取模块信息

此示例演示如何获取模块的配置值。 模块清单中的值反映在模块对象的属性值中。

Get-Module cmdlet 用于使用 List 参数获取 Microsoft.PowerShell.Diagnostics 模块。 该命令将模块发送到 Format-List cmdlet 以显示模块对象的所有属性和值。

Get-Module Microsoft.PowerShell.Diagnostics -List | Format-List -Property *

LogPipelineExecutionDetails : False
Name                        : Microsoft.PowerShell.Diagnostics
Path                        : C:\Windows\system32\WindowsPowerShell\v1.0\Modules\Microsoft.PowerShell.Diagnostics\Micro
                              soft.PowerShell.Diagnostics.psd1
Definition                  :
Description                 :
Guid                        : ca046f10-ca64-4740-8ff9-2565dba61a4f
HelpInfoUri                 : https://go.microsoft.com/fwlink/?LinkID=210596
ModuleBase                  : C:\Windows\system32\WindowsPowerShell\v1.0\Modules\Microsoft.PowerShell.Diagnostics
PrivateData                 :
Version                     : 3.0.0.0
ModuleType                  : Manifest
Author                      : Microsoft Corporation
AccessMode                  : ReadWrite
ClrVersion                  : 4.0
CompanyName                 : Microsoft Corporation
Copyright                   : Microsoft Corporation. All rights reserved.
DotNetFrameworkVersion      :
ExportedFunctions           : {}
ExportedCmdlets             : {[Get-WinEvent, Get-WinEvent], [Get-Counter, Get-Counter], [Import-Counter,
                              Import-Counter], [Export-Counter, Export-Counter]...}
ExportedCommands            : {[Get-WinEvent, Get-WinEvent], [Get-Counter, Get-Counter], [Import-Counter,
                              Import-Counter], [Export-Counter, Export-Counter]...}
FileList                    : {}
ModuleList                  : {}
NestedModules               : {}
PowerShellHostName          :
PowerShellHostVersion       :
PowerShellVersion           : 3.0
ProcessorArchitecture       : None
Scripts                     : {}
RequiredAssemblies          : {}
RequiredModules             : {}
RootModule                  :
ExportedVariables           : {}
ExportedAliases             : {}
ExportedWorkflows           : {}
SessionState                :
OnRemove                    :
ExportedFormatFiles         : {C:\Windows\system32\WindowsPowerShell\v1.0\Event.format.ps1xml,
                              C:\Windows\system32\WindowsPowerShell\v1.0\Diagnostics.format.ps1xml}
ExportedTypeFiles           : {C:\Windows\system32\WindowsPowerShell\v1.0\GetEvent.types.ps1xml}

参数

-AliasesToExport

指定模块导出的别名。 允许使用通配符。

可以使用此参数来限制由模块导出的别名。 它可以从导出的别名列表中移除别名,但不能将别名添加到该列表中。

如果省略此参数,则 New-ModuleManifest 将创建一个值为 *(全部)的 AliasesToExport 键,这意味着模块中定义的所有别名都由清单导出。

Type:String[]
Position:Named
Default value:* (all)
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-Author

指定模块作者。

如果省略此参数,则 New-ModuleManifest 将创建一个具有当前用户名称的 Author 键。

Type:String
Position:Named
Default value:Name of the current user
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ClrVersion

指定模块需要的 Microsoft .NET Framework 的公共语言运行时 (CLR) 的最低版本。

注意

此设置仅适用于 PowerShell Desktop 版本(如 Windows PowerShell 5.1),并且仅适用于低于 4.5 的 .NET Framework 版本。 此要求对较新版本的 PowerShell 或 .NET Framework 不起作用。

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

-CmdletsToExport

指定模块导出的 cmdlet。 允许使用通配符。

可以使用此参数来限制由模块导出的 cmdlet。 它可以从导出的 cmdlet 列表中移除 cmdlet,但不能将 cmdlet 添加到该列表中。

如果省略此参数,则 New-ModuleManifest 将创建一个值为 *(全部)的 CmdletsToExport 键,这意味着模块中定义的所有 cmdlet 都由清单导出。

Type:String[]
Position:Named
Default value:* (all)
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-CompanyName

标识创建了该模块的公司或供应商。

如果省略此参数,则 New-ModuleManifest 将创建一个值为“Unknown”的 CompanyName 键。

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

-CompatiblePSEditions

指定模块的兼容 PSEdition。 有关 PSEdition 的信息,请参阅具有兼容的 PowerShell 版本的模块

Type:String[]
Accepted values:Desktop, Core
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Confirm

提示你在运行 cmdlet 之前进行确认。

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

指定模块的版权声明。

如果省略此参数,New-ModuleManifest 会创建一个 Copyright 键,其值为 (c) <year> <username>. All rights reserved.,其中 <year> 是当前年份,<username>Author 键的值。

Type:String
Position:Named
Default value:(c) <year> <username>. All rights reserved.
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DefaultCommandPrefix

指定将模块中的所有命令导入会话中时在其名词前预置的前缀。 输入前缀字符串。 前缀可防止用户会话中的命令名称发生冲突。

模块用户可以通过指定 Import-Module cmdlet 的 Prefix 参数来替代此前缀。

此参数是在 PowerShell 3.0 中引入的。

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

-Description

描述模块的内容。

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

-DotNetFrameworkVersion

指定模块需要的 Microsoft .NET Framework 的最低版本。

注意

此设置仅适用于 PowerShell Desktop 版本(如 Windows PowerShell 5.1),并且仅适用于低于 4.5 的 .NET Framework 版本。 此要求对较新版本的 PowerShell 或 .NET Framework 不起作用。

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

-DscResourcesToExport

指定模块导出的 Desired State Configuration (DSC) 资源。 允许使用通配符。

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

-ExternalModuleDependencies

此模块所依赖的外部模块的列表。

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

-FileList

指定模块中包括的所有项。

此键专门用于充当模块清单。 发布模块时,将包含键中列出的文件,但不会自动导出任何函数。

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

-FormatsToProcess

指定在导入模块时运行的格式设置文件 (.ps1xml)。

导入模块时,PowerShell 使用指定的文件运行 Update-FormatData cmdlet。 由于没有确定格式设置文件的作用域,因此它们会影响会话中的所有会话状态。

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

-FunctionsToExport

指定模块导出的函数。 允许使用通配符。

可以使用此参数来限制由模块导出的函数。 它可以从导出的别名列表中删除函数,但不能将函数添加到该列表中。

如果省略此参数,则 New-ModuleManifest 将创建一个值为 *(全部)的 FunctionsToExport 键,这意味着模块中定义的所有函数都由清单导出。

Type:String[]
Position:Named
Default value:* (all)
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-Guid

指定模块的唯一标识符。 可以使用 GUID 来区分名称相同的模块。

如果省略此参数,则 New-ModuleManifest 将在清单中创建一个 GUID 键,并为其值生成一个 GUID

若要在 PowerShell 中创建新的 GUID,请键入 [guid]::NewGuid()

Type:Guid
Position:Named
Default value:A GUID generated for the module
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-HelpInfoUri

指定模块的 HelpInfo XML 文件的 Internet 地址。 输入以 httphttps 开头的统一资源标识符 (URI)。

HelpInfo XML 文件支持在 PowerShell 3.0 中引入的“可更新帮助”功能。 它包含有关该模块的可下载帮助文件的位置,以及每个支持的区域设置的最新帮助文件的版本号的信息。

有关可更新的帮助的信息,请参阅 about_Updatable_Help。 有关 HelpInfo XML 文件的信息,请参阅支持可更新的帮助

此参数是在 PowerShell 3.0 中引入的。

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

-IconUri

指定模块图标的 URL。 指定的图标显示在模块的库网页上。

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

-LicenseUri

指定模块许可条款的 URL。

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

-ModuleList

列出此模块中包括的所有模块。

以字符串形式或具有 ModuleNameModuleVersion 键的哈希表形式输入每个模块名称。 哈希表也可能具有一个可选的 GUID 键。 可以将字符串和哈希表组合到参数值中。

此键专门用于充当模块清单。 不会自动处理此键的值中列出的模块。

Type:Object[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ModuleVersion

指定模块的版本。

此参数不是必需的,但清单中需要 ModuleVersion 键。 如果省略此参数,则 New-ModuleManifest 将创建一个值为 1.0 的 ModuleVersion 键。

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

-NestedModules

指定导入模块的会话状态中的脚本模块 (.psm1) 和二进制模块 (.dll)。 NestedModules 键中的文件按其在对应值中的列出顺序来运行。

以字符串形式或具有 ModuleNameModuleVersion 键的哈希表形式输入每个模块名称。 哈希表也可能具有一个可选的 GUID 键。 可以将字符串和哈希表组合到参数值中。

通常情况下,嵌套模块包含根模块需用于内部处理的命令。 默认情况下,会将嵌套模块中的命令从模块的会话状态导出到调用方的会话状态中,但根模块可以限制其导出的命令。 例如,使用 Export-ModuleMember 命令。

模块会话状态中的嵌套模块对根模块可用,但它们不会由调用方的会话状态中的 Get-Module 命令返回。

将在模块的会话状态(而不是调用方的会话状态)中运行在 NestedModules 键中列出的脚本 (.ps1)。 若要在调用方的会话状态中运行脚本,请在清单的 ScriptsToProcess 键的值中列出脚本文件名。

Type:Object[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-PassThru

将生成的模块清单写入控制台中并创建 .psd1 文件。 默认情况下,此 cmdlet 不会生成任何输出。

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

-Path

指定新模块清单的路径和文件名。 输入路径和具有 .psd1 文件扩展名的文件名,例如 $pshome\Modules\MyModule\MyModule.psd1Path 参数是必需的。

如果指定现有文件的路径,则 New-ModuleManifest 将在不显示警告的情况下替换文件,除非该文件具有只读属性。

应将清单放置在模块目录中,而且清单文件名应与模块目录名相同,但其文件扩展名为 .psd1

注意

提示输入 Path 参数值时,不能使用 $PSHOME$HOME 等变量。 若要使用变量,请将 Path 参数包含在命令中。

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

-PowerShellHostName

指定模块需要的 PowerShell 主机程序的名称。 输入主机程序的名称,例如 Windows PowerShell ISE HostConsoleHost。 不允许使用通配符。

若要查找主机程序的名称,请在该程序中键入 $Host.Name

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

-PowerShellHostVersion

指定适用于该模块的 PowerShell 主机程序的最低版本。 输入版本号,例如 1.1。

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

-PowerShellVersion

指定适用于此模块的 PowerShell 的最低版本。 例如,可以输入 1.0、2.0 或 3.0 作为参数的值。 它必须采用 X.X 格式。 例如,如果提交 5,PowerShell 将引发错误。

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

-Prerelease

此模块的预发行版字符串。 添加预发行版字符串会将模块标识为预发行版本。 当模块发布到 PowerShell 库后,此数据用于标识预发行版程序包。 若要从库中获取预发行版程序包,必须将 AllowPrerelease 参数与 PowerShellGet 命令 Find-ModuleInstall-ModuleUpdate-ModuleSave-Module 一起使用。

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

-PrivateData

指定导入模块时传递给模块的数据。

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

-ProcessorArchitecture

指定模块需要的处理器体系结构。 有效值为 x86、AMD64、IA64、MSIL 和 None(未知或未指定)。

Type:ProcessorArchitecture
Accepted values:None, MSIL, X86, IA64, Amd64, Arm
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ProjectUri

指定有关此项目的网页的 URL。

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

-ReleaseNotes

指定发行说明。

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

-RequiredAssemblies

指定模块所需的程序集 (.dll) 文件。 输入程序集文件名。 PowerShell 先加载指定的程序集,然后再更新类型或格式、导入嵌套模块,或导入在 RootModule 键的值中指定的模块文件。

使用此参数可列出模块所需要的所有程序集,包括必须加载以更新在 FormatsToProcessTypesToProcess 键中列出的任何格式设置文件或类型文件的程序集,即使另将这些程序集列为 NestedModules 键中的二进制模块也是如此。

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

-RequiredModules

指定必须处于全局会话状态的模块。 如果所需模块未处于全局会话状态,则 PowerShell 将导入它们。 如果所需的模块不可用,Import-Module 命令将失败。

以字符串形式或具有 ModuleNameModuleVersion 键的哈希表形式输入每个模块名称。 哈希表也可能具有一个可选的 GUID 键。 可以将字符串和哈希表组合到参数值中。

在 PowerShell 2.0 中,Import-Module 不会自动导入所需的模块。 它只会验证所需模块是否处于全局会话状态。

Type:Object[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-RequireLicenseAcceptance

此标志指示模块是否要求用户明确同意安装、更新或保存。

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

-RootModule

指定模块的主文件或根文件。 输入脚本的文件名 (.ps1)、脚本模块 (.psm1)、模块清单 (.psd1)、程序集 (.dll)、cmdlet 定义 XML 文件 (.cdxml) 或工作流 (.xaml)。 导入模块时,从根模块文件导出的成员将导入到调用方的会话状态中。

如果模块具有清单文件且未在 RootModule 键中指定任何根文件,则该清单将成为模块的主文件,并且该模块将成为清单模块(ModuleType = Manifest)。

若要从具有清单的模块中的 .psm1.dll 文件中导出成员,则必须在该清单的 RootModuleNestedModules 键的值中指定这些文件的名称。 否则,不会导出其成员。

注意

在 PowerShell 2.0 中,此键称为 ModuleToProcess。 可以使用 RootModule 参数名称或其 ModuleToProcess 别名。

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

-ScriptsToProcess

指定导入模块时在调用方的会话状态中运行的脚本 (.ps1) 文件。 可以像使用登录脚本一样使用这些脚本来准备环境。

若要指定在模块的会话状态中运行的脚本,请使用 NestedModules 键。

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

-Tags

指定标记的数组。

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

-TypesToProcess

指定在导入模块时运行的类型文件 (.ps1xml)。

导入模块时,PowerShell 使用指定的文件运行 Update-TypeData cmdlet。 由于没有确定类型文件的作用域,因此它们会影响会话中的所有会话状态。

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

-VariablesToExport

指定模块导出的变量。 允许使用通配符。

可以使用此参数来限制由模块导出的变量。 它可以从导出的变量列表中删除变量,但不能将变量添加到该列表中。

如果省略此参数,则 New-ModuleManifest 将创建一个值为 *(全部)的 VariablesToExport 键,这意味着模块中定义的所有变量都由清单导出。

Type:String[]
Position:Named
Default value:* (all)
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-WhatIf

显示在 New-ModuleManifest 运行的情况下会发生什么。 cmdlet 未运行。

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

输入

None

不能通过管道将对象传递给此 cmdlet。

输出

None

默认情况下,此 cmdlet 不返回任何输出。

String

使用 PassThru 参数时,此 cmdlet 返回表示模块清单的字符串。

备注

在 Windows 和非 Windows 平台上运行的 New-ModuleManifest 会创建编码为 UTF8NoBOM 的模块清单 (.psd1) 文件。

模块清单通常是可选的。 但是,若要导出安装在全局程序集缓存中的程序集,则模块清单是必需的。

若要在 $pshome\Modules 目录中添加或更改文件,请使用“以管理员身份运行”选项启动 Windows PowerShell。

注意

从 PowerShell 6.2 开始,PowerShell 会尝试加载模块清单的 FileList 属性中列出的所有 DLL 文件。 FileList 中的原生 DLL 无法加载到进程中,并且该错误将被忽略。 所有托管 DLL 将被加载到进程中。 此行为在 PowerShell 7.1 中已被移除。

即使模块清单中不需要 New-ModuleManifest 的多个参数,它们在 PowerShell 2.0 中也是必需的。 从 PowerShell 3.0 开始,只有 Path 参数是必需的。

会话是 PowerShell 执行环境的实例。 一个会话可以具有一个或多个会话状态。 默认情况下,会话仅具有全局会话状态,但每个导入的模块都具有其自己的会话状态。 会话状态允许模块中的命令在不影响全局会话状态的情况下运行。

“调用方的会话状态”是指将模块导入到其中的会话状态。 通常,它是指全局会话状态,但当某个模块导入嵌套模块时,该模块为“调用方”,而模块的会话状态为“调用方的会话状态”。