New-ModuleManifest
创建一个新的模块清单。
语法
New-ModuleManifest [-Path] <string> -Author <string> -CompanyName <string> -Copyright <string> -Description <string> -FileList <string[]> -FormatsToProcess <string[]> -ModuleToProcess <string> -NestedModules <string[]> -RequiredAssemblies <string[]> -TypesToProcess <string[]> [-AliasesToExport <string[]>] [-ClrVersion <Version>] [-CmdletsToExport <string[]>] [-DotNetFrameworkVersion <Version>] [-FunctionsToExport <string[]>] [-Guid <Guid>] [-ModuleList <Object[]>] [-ModuleVersion <Version>] [-PassThru] [-PowerShellHostName <string>] [-PowerShellHostVersion <Version>] [-PowerShellVersion <Version>] [-PrivateData <Object>] [-ProcessorArchitecture {<None> | <MSIL> | <X86> | <IA64> | <Amd64>}] [-RequiredModules <Object[]>] [-ScriptsToProcess <string[]>] [-VariablesToExport <string[]>] [-Confirm] [-WhatIf] [<CommonParameters>]
说明
New-ModuleManifest cmdlet 创建一个新的模块清单 (.psd1) 文件,填入它的值,并将该清单文件保存在指定的路径。
模块作者可以使用该 cmdlet 为其模块创建清单。模块清单是一个包含哈希表的 .psd1 文件。此哈希表中的键和值描述模块的内容和属性,定义先决条件,并确定如何处理组件。清单不是模块所必需的。
New-ModuleManifest 创建一个包含所有常用清单键的清单,因此您可以使用默认输出作为清单模板。若要添加或更改值,或者添加该 cmdlet 不添加的模块键,请在文本编辑器中打开生成的文件。
该 cmdlet 的每个参数(Path 和 PassThru 除外)都创建一个模块清单键及其值。在模块清单中,只有 ModuleVersion 键是必需的。但是,该 cmdlet 的其他若干参数是强制性的。因此,您可以键入不带参数的“New-ModuleManifest”命令,该 cmdlet 将提示您提供其他常用键的值。要将值保留为空,请按 Enter。
有关模块清单的格式、效果和要求的完整说明,请参阅 MSDN (Microsoft Developer Network) Library 中的“如何编写模块清单”,地址是:https://go.microsoft.com/fwlink/?LinkId=143613。
参数
-AliasesToExport <string[]>
指定模块导出的别名。允许使用通配符。
使用此参数可以限定模块导出的别名。它可以从导出的别名列表中删除别名,但不能向列表中添加别名。
如果省略此参数,New-ModuleManifest 将创建一个值为“*(所有)”的 AliasesToExport 键,表示清单将导出该模块导出的所有别名。
是否为必需? |
false |
位置? |
named |
默认值 |
*(所有) |
是否接受管道输入? |
false |
是否接受通配符? |
true |
-Author <string>
指定模块作者。
cmdlet 需要此参数,但在清单中 Author 键不是必需的。如果省略此参数,并且在提示时不输入值,New-ModuleManifest 将创建一个具有当前用户名称的 Author 键。
是否为必需? |
true |
位置? |
named |
默认值 |
当前用户名称 |
是否接受管道输入? |
false |
是否接受通配符? |
false |
-ClrVersion <Version>
指定模块要求的 Microsoft .NET Framework 公共语言运行时 (CLR) 的版本。
如果省略此参数,New-ModuleManifest 将创建一个值为空字符串的 CLRVersion 键。
是否为必需? |
false |
位置? |
named |
默认值 |
无 |
是否接受管道输入? |
false |
是否接受通配符? |
false |
-CmdletsToExport <string[]>
指定模块导出的 cmdlet。允许使用通配符。
使用此参数可以限定模块导出的 cmdlet。它可以从导出的 cmdlet 列表中删除 cmdlet,但不能向列表中添加 cmdlet。
如果省略此参数,New-ModuleManifest 将创建一个值为“*(所有)” 的 CmdletsToExport 键,表示清单将导出该模块导出的所有 cmdlet。
是否为必需? |
false |
位置? |
named |
默认值 |
*(所有) |
是否接受管道输入? |
false |
是否接受通配符? |
true |
-CompanyName <string>
标识创建模块的公司或供应商。
cmdlet 需要此参数,但 CompanyName 键在清单中不是必需的。如果省略此参数,并且在提示时不输入值,New-ModuleManifest 将创建一个值为“Unknown”的 CompanyName 键。
是否为必需? |
true |
位置? |
named |
默认值 |
"Unknown" |
是否接受管道输入? |
false |
是否接受通配符? |
false |
-Copyright <string>
指定模块的版权声明。
cmdlet 需要此参数,但 Copyright 键在清单中不是必需的。如果省略此参数,并且在提示时不输入值,New-ModuleManifest 将创建一个 Copyright 键,其值为“(c) <年份> <用户名>。保留所有权利。”其中,<年份> 为当前年份,<用户名> 是 Author 键的值(如果有指定)或当前用户的名称。
是否为必需? |
true |
位置? |
named |
默认值 |
(c) <年份> <用户名>。保留所有权利。 |
是否接受管道输入? |
false |
是否接受通配符? |
false |
-Description <string>
描述模块的内容。
cmdlet 需要此参数,但 Description 键在清单中不是必需的。如果省略此参数,并且在提示时不输入值,New-ModuleManifest 将创建一个值为空字符串的 Description 键。
是否为必需? |
true |
位置? |
named |
默认值 |
无 |
是否接受管道输入? |
false |
是否接受通配符? |
false |
-DotNetFrameworkVersion <Version>
指定模块要求的 Microsoft .NET Framework 的版本。
如果省略此参数,New-ModuleManifest 将创建一个值为空字符串的 DotNetFrameWorkVersion 键。
是否为必需? |
false |
位置? |
named |
默认值 |
无 |
是否接受管道输入? |
false |
是否接受通配符? |
false |
-FileList <string[]>
指定模块中包含的所有项。
该键设计用作模块清单。这些文件不会自动随模块导出。
cmdlet 需要此参数,但在清单中 FileList 键不是必需的。如果省略此参数,并且在提示时不输入值,New-ModuleManifest 将创建一个值为空数组的 FileList 键。
是否为必需? |
true |
位置? |
named |
默认值 |
无 |
是否接受管道输入? |
false |
是否接受通配符? |
false |
-FormatsToProcess <string[]>
指定要在导入模块时运行的格式文件 (.ps1xml)。
在导入模块时,Windows PowerShell 使用指定的文件运行 Update-FormatData cmdlet。由于没有确定格式文件的作用域,因此它们会影响到会话中的所有会话状态。
cmdlet 需要此参数,但 FormatsToProcess 键在清单中不是必需的。如果省略此参数,并且在提示时不输入值,New-ModuleManifest 将创建一个值为空数组的 FormatsToProcess 键。
是否为必需? |
true |
位置? |
named |
默认值 |
无 |
是否接受管道输入? |
false |
是否接受通配符? |
false |
-FunctionsToExport <string[]>
指定模块导出的函数。允许使用通配符。
使用此参数可以限定模块导出的函数。它可以从导出的别名列表中删除函数,但不能向列表中添加函数。
如果省略此参数,New-ModuleManifest 将创建一个值为“*(所有)”的 FunctionsToExport 键,表示清单将导出该模块导出的所有函数。
是否为必需? |
false |
位置? |
named |
默认值 |
*(所有) |
是否接受管道输入? |
false |
是否接受通配符? |
true |
-Guid <Guid>
指定模块的唯一标识符。GUID 可用于区分具有相同名称的多个模块。
如果省略此参数,New-ModuleManifest 将在清单中创建一个 GUID 键,并为值生成一个 GUID。
若要在 Windows PowerShell 中创建一个新的 GUID,请键入“[guid]::NewGuid()”。
是否为必需? |
false |
位置? |
named |
默认值 |
为模块生成的 GUID |
是否接受管道输入? |
false |
是否接受通配符? |
false |
-ModuleList <Object[]>
列出随此模块一起包装的所有模块。
以字符串形式输入每个模块名称,或输入具有 ModuleName 和 GUID 键的哈希表。该哈希表还可以包含可选的 ModuleVersion 键。
该键设计用作模块清单。这些模块不会被自动处理。
如果省略此参数,New-ModuleManifest 将在清单中创建一个值为空数组的 ModuleList 键。
是否为必需? |
false |
位置? |
named |
默认值 |
无 |
是否接受管道输入? |
false |
是否接受通配符? |
false |
-ModuleToProcess <string>
指定模块的主文件或“根”文件。导入模块时,从根模块文件中导出的成员将被导入到调用方的会话状态中。输入一个脚本模块 (.psm1) 或二进制模块 (.dll) 的文件名。
如果模块具有清单文件,并且 ModuleToProcess 键中没有指定任何根文件,则清单将成为模块的主文件,并且模块将成为“清单模块”(ModuleType = Manifest)。
若要从具有清单的模块中的 .psm1 或 .dll 文件中导出成员,则必须在清单中的 ModuleToProcess 或 NestedModules 键的值中指定这些文件的名称。否则,将不会导出它们的成员。
cmdlet 需要此参数,但在清单中 ModuleToProcess 键不是必需的。如果省略此参数,并且在提示时不输入值,New-ModuleManifest 将创建一个值为空数组的 ModuleToProcess 键。
是否为必需? |
true |
位置? |
named |
默认值 |
无 |
是否接受管道输入? |
false |
是否接受通配符? |
false |
-ModuleVersion <Version>
指定模块的版本。
cmdlet 不需要此参数,但清单中需要 ModuleVersion 键。如果省略此参数,New-ModuleManifest 将创建一个值为“1.0”的 ModuleVersion 键。
是否为必需? |
false |
位置? |
named |
默认值 |
1.0 |
是否接受管道输入? |
false |
是否接受通配符? |
false |
-NestedModules <string[]>
指定导入模块会话状态的脚本模块 (.psm1) 和二进制模块 (.dll)。NestedModules 键中的文件按它们在值中的列出顺序运行。
通常情况下,嵌套模块包含根模块进行其内部处理所需的命令。默认情况下,嵌套模块中的命令从模块的会话状态导出到调用方的会话状态中,但是根模块可以限定它导出的命令(例如,使用 Export-Module 命令)。
模块会话状态中的嵌套模块可用于根模块,但这些嵌套模块不是由调用方会话状态中的 Get-Module 命令返回的。
NestedModules 键中列出的脚本 (.ps1) 在模块的会话状态而不是在调用方的会话状态中运行。要在调用方的会话状态中运行脚本,应在清单中的 ScriptsToProcess 键的值中列出脚本文件名。
cmdlet 需要此参数,但在清单中 NestedModules 键不是必需的。如果省略此参数,并且在提示时不输入值,New-ModuleManifest 将创建一个值为空数组的 NestedModules 键。
是否为必需? |
true |
位置? |
named |
默认值 |
无 |
是否接受管道输入? |
false |
是否接受通配符? |
false |
-PassThru
除了创建一个 .psd1 文件,还将生成的模块清单写入控制台。默认情况下,此 cmdlet 将不产生任何输出。
是否为必需? |
false |
位置? |
named |
默认值 |
False |
是否接受管道输入? |
false |
是否接受通配符? |
false |
-Path <string>
指定新模块清单的路径和文件名。输入路径和具有 .psd1 扩展名的文件名,例如“$pshome\Modules\MyModule\MyModule.psd1”。此参数是必需的。
如果指定现有文件的路径,则除非文件具有只读属性,否则 New-ModuleManifest 将在不提示的情况下替换文件。
清单应位于模块目录中,且清单文件名应与模块目录名相同,但文件扩展名为 .psd1。
注意:当提示您输入 Path 参数值时,您不能使用诸如 $pshome 或 $home 这样的变量。要使用变量,请在命令中包括 Path 参数。
是否为必需? |
true |
位置? |
1 |
默认值 |
无 |
是否接受管道输入? |
false |
是否接受通配符? |
false |
-PowerShellHostName <string>
指定模块所需的 Windows PowerShell 主机程序的名称。输入主机程序的名称,例如“Windows PowerShell ISE Host”或“ConsoleHost”。不允许使用通配符。
要查找主机程序的名称,请在程序中键入“$host.name”。
如果省略此参数,New-ModuleManifest 将创建一个值为空字符串的 PowerShellHostName 键。
是否为必需? |
false |
位置? |
named |
默认值 |
无 |
是否接受管道输入? |
false |
是否接受通配符? |
false |
-PowerShellHostVersion <Version>
指定用于该模块的 Windows PowerShell 主机程序的最低版本。请输入版本号,例如 1.1。
如果省略此参数,New-ModuleManifest 将创建一个值为空字符串的 PowerShellHostName 键。
是否为必需? |
false |
位置? |
named |
默认值 |
无 |
是否接受管道输入? |
false |
是否接受通配符? |
false |
-PowerShellVersion <Version>
指定用于该模块的 Windows PowerShell 的最低版本。输入 1.0 或 2.0。不强制要求使用超过 2.0 的版本。
如果省略此参数,New-ModuleManifest 将创建一个值为空字符串的 PowerShellVersion 键。
是否为必需? |
false |
位置? |
named |
默认值 |
无 |
是否接受管道输入? |
false |
是否接受通配符? |
false |
-PrivateData <Object>
指定导入模块时传递给模块的数据。
如果省略此参数,New-ModuleManifest 将创建一个值为空字符串的 PrivateData 键。
是否为必需? |
false |
位置? |
named |
默认值 |
无 |
是否接受管道输入? |
false |
是否接受通配符? |
false |
-ProcessorArchitecture <ProcessorArchitecture>
指定模块需要的处理器体系结构。有效值为 x86、AMD64、IA64 和 None(未知或未指定)。
如果省略此参数,New-ModuleManifest 将创建一个值为空字符串的 ProcessorArchitecture 键。
是否为必需? |
false |
位置? |
named |
默认值 |
无 |
是否接受管道输入? |
false |
是否接受通配符? |
false |
-RequiredAssemblies <string[]>
指定模块需要的程序集 (.dll) 文件。Windows PowerShell 在更新类型或格式、导入嵌套模块或导入 ModuleToProcess 键的值所指定的模块文件之前,会先加载指定的程序集。
使用此参数可列出模块所需要的所有程序集,包括必须加载以更新在 FormatsToProcess 或 TypesToProcess 键中列出的任何格式或类型文件的程序集,即使 NestedModules 键中另将这些程序集列为二进制模块时也需要如此。
cmdlet 需要此参数,但在清单中 RequiredAssemblies 键不是必需的。如果省略此参数,并且在提示时不输入值,New-ModuleManifest 将创建一个值为空数组的 RequiredAssemblies 键。
是否为必需? |
true |
位置? |
named |
默认值 |
无 |
是否接受管道输入? |
false |
是否接受通配符? |
false |
-RequiredModules <Object[]>
指定必须处于全局会话状态的模块。如果所需模块未处于全局会话状态,则导入此模块的尝试将失败。
以字符串形式输入每个模块名称,或输入具有 ModuleName 和 GUID 键的哈希表。该哈希表还可以包含可选的 ModuleVersion 键。有关详细信息,请参阅示例。
Windows PowerShell 不会自动导入所需的模块。它只验证所需的模块是否存在。但是,模块可以包含将所需模块导入全局会话状态的脚本 (.ps1)。
如果省略此参数,New-ModuleManifest 将创建一个值为空字符串的 RequiredModules 键。
是否为必需? |
false |
位置? |
named |
默认值 |
无 |
是否接受管道输入? |
false |
是否接受通配符? |
false |
-ScriptsToProcess <string[]>
指定在导入模块时在调用方会话状态中运行的脚本 (.ps1) 文件。您可以像使用登录脚本一样使用这些脚本来准备环境。
要指定在模块会话状态中运行的脚本,请使用 NestedModules 键。
如果省略此参数,New-ModuleManifest 将创建一个值为空数组的 ScriptsToProcess 键。
是否为必需? |
false |
位置? |
named |
默认值 |
无 |
是否接受管道输入? |
false |
是否接受通配符? |
false |
-TypesToProcess <string[]>
指定要在导入模块时运行的类型文件 (.ps1xml)。
在导入此模块时,Windows PowerShell 使用指定的文件运行 Update-TypeData cmdlet。由于没有确定类型文件的作用域,因此它们会影响到会话中的所有会话状态。
cmdlet 需要此参数,但 TypesToProcess 键在清单中不是必需的。如果省略此参数,并且在提示时不输入值,New-ModuleManifest 将创建一个值为空数组的 TypesToProcess 键。
是否为必需? |
true |
位置? |
named |
默认值 |
无 |
是否接受管道输入? |
false |
是否接受通配符? |
false |
-VariablesToExport <string[]>
指定模块导出的变量。允许使用通配符。
使用此参数可以限定模块导出的变量。它可以从导出的变量列表中删除变量,但不能向列表中添加变量。
如果省略此参数,New-ModuleManifest 将创建一个值为“*(所有)”的 VariablesToExport 键,表示清单将导出该模块导出的所有变量。
是否为必需? |
false |
位置? |
named |
默认值 |
*(所有) |
是否接受管道输入? |
false |
是否接受通配符? |
true |
-Confirm
在执行命令之前提示您进行确认。
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
-WhatIf
描述如果执行该命令会发生什么情况(无需实际执行该命令)。
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
<CommonParameters>
此 cmdlet 支持通用参数:-Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer 和 -OutVariable。有关详细信息,请参阅 about_Commonparameters.
输入和输出
输入类型是指可通过管道传递给 cmdlet 的对象的类型。返回类型是指 Cmdlet 所返回对象的类型。
输入 |
无 不能通过管道将输入传递给此 cmdlet。 |
输出 |
“无”或 System.String 默认情况下,New-ModuleManifest 不生成任何输出。但是,如果使用 PassThru 参数,则生成表示模块清单的 System.String 对象。 |
说明
模块清单通常是可选的。但是,要导出安装在全局程序集缓存中的程序集,则模块清单是必需的。
要向 $pshome\Modules 目录 (%Windir%\System32\WindowsPowerShell\v1.0\Modules) 中添加文件或更改其中的文件,请使用“以管理员身份运行”选项启动 Windows PowerShell。
“会话”是 Windows PowerShell 执行环境的一个实例。一个会话可以有一个或多个会话状态。默认情况下,会话只有全局会话状态,但每个导入的模块都拥有自己的会话状态。通过使用会话状态,模块中的命令可以在不影响全局会话状态的情况下运行。
“调用方会话状态”是指将模块导入到其中的会话状态。该状态通常是指全局会话状态,但当某个模块导入嵌套模块时,该模块为“调用方”,而该模块的会话状态为“调用方会话状态”。
示例 1
C:\PS>New-ModuleManifest
Path: C:\Users\User01\Documents\WindowsPowerShell\Modules\Test-Module\Test-Module.psd1
NestedModules[0]: BackgroundModule.psm1
Author: Jinghao Liu
CompanyName: Fabrikam, Inc.
Copyright: Copyright © 2009 Liu Jinghao. All rights reserved.
ModuleToProcess: TestModule.psm1
Description: Cmdlets to find common errors in scripts.
TypesToProcess[0]: TestTypes.ps1xml
FormatsToProcess[0]: TestFormat.ps1xml
RequiredAssemblies[0]: Test.dll
FileList[0]: Test-Module.psd1
FileList[1]: Test-Module.psm1
FileList[2]: BackgroundModule.psm1
FileList[3]: TestTypes.ps1xml
FileList[4]: TestFormat.ps1xml
FileList[5]: Test.dll
FileList[6]: TestIcon.ico
说明
-----------
此命令创建一个新的模块清单。cmdlet 将提示您提供所需的参数(包括 Path 参数),并在指定位置创建一个清单文件。
此命令的输出显示对提示的响应示例。若要使用默认值,请按 Enter。
实际提示以及它对由引号括起的短语和不带引号的短语的处理取决于运行 Windows PowerShell 的主机程序。
示例 2
C:\PS>New-ModuleManifest -PowerShellVersion 1.0 -AliasesToExport JKBC, DRC, TAC
说明
-----------
此命令创建一个新的模块清单。它包括 cmdlet 不需要(或不提示)的参数。您可以在提示符下包括其他清单键值。
示例 3
C:\PS>New-ModuleManifest -RequiredModules FileTransfer,@{ModuleName="BackgroundModule";GUID="486569a2-2784-48bf-af15-70ba837a64d0";ModuleVersion="3.5"}
说明
-----------
此示例说明如何使用 RequiredModules 参数值的字符串和哈希表格式。可在同一命令中使用字符串和哈希表。
此命令为一个需要 FileTransfer 模块的模块和一个名为“BackgroundModule”的(虚拟)模块创建一个模块清单。
此命令使用字符串格式指定 FileTransfer 模块的名称,并使用哈希表格式指定 BackgroundModule 的名称、GUID 和版本。
另请参阅
概念
Import-Module
Get-Module
New-Module
Remove-Module
Export-ModuleMember
Test-ModuleManifest
about_Modules