about_Module_Manifests
Descripción breve
Describe la configuración y los procedimientos para escribir archivos de manifiesto del módulo.
Descripción larga
Un manifiesto de módulo es un archivo de datos de PowerShell (.psd1
) que contiene una tabla hash.
Los pares keys-value de la tabla hash describen el contenido y los atributos del módulo, definen los requisitos previos y controlan cómo se procesan los componentes.
Los manifiestos no son necesarios para cargar un módulo, pero son necesarios para publicar un módulo en el Galería de PowerShell. Los manifiestos también le permiten separar la implementación del módulo de cómo se carga. Con un manifiesto, puede definir requisitos, compatibilidad, orden de carga y mucho más.
Cuando se usa New-ModuleManifest
sin especificar ningún parámetro para la configuración del manifiesto, escribe un archivo de manifiesto mínimo. El fragmento de código siguiente muestra esta salida predeterminada, recortada de comentarios y espaciado para mayor brevedad:
@{
# 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 = ''
}
Puede usar Test-ModuleManifest
para validar un manifiesto de módulo antes de publicar el módulo. Test-ModuleManifest
devuelve un error si el manifiesto no es válido o el módulo no se puede importar en la sesión actual porque la sesión no cumple los requisitos establecidos en el manifiesto.
Uso del código de script en un manifiesto de módulo
Los valores asignados a la configuración del archivo de manifiesto pueden ser expresiones evaluadas por PowerShell. Esto le permite construir rutas de acceso y asignar valores condicionalmente basados en variables.
Al importar un módulo mediante Import-Module
, el manifiesto se evalúa en Restricted
modo de lenguaje. Restricted
el modo limita los comandos y variables que se pueden usar.
Comandos permitidos
Import-LocalizedData
ConvertFrom-StringData
Write-Host
Out-Host
Join-Path
Variables permitidas
$PSScriptRoot
$PSEdition
$EnabledExperimentalFeatures
- Cualquier variable de entorno, como
$ENV:TEMP
Para obtener más información, consulte about_Language_Modes.
Configuración del manifiesto
En las secciones siguientes se detallan todas las opciones disponibles en un manifiesto de módulo y cómo se pueden usar. Comienzan con una sinopsis de la configuración y van seguidas de una matriz que enumera:
- Tipo de entrada: el tipo de objeto que puede especificar para esta configuración en el manifiesto.
- Obligatorio: si este valor es
Yes
, se requiere la configuración tanto para importar el módulo como para publicarlo en el Galería de PowerShell. Si esNo
, no es necesario para ninguno. Si esPowerShell Gallery
, solo es necesario para publicar en el Galería de PowerShell. - Valor si no se establece: el valor que tiene esta configuración cuando se importa y no se establece explícitamente.
- Acepta caracteres comodín: indica si esta configuración puede tomar o no un valor comodín.
RootModule
Esta configuración especifica el archivo principal o raíz del módulo. Cuando se importa el módulo, los miembros exportados por el archivo del módulo raíz se importan en el estado de sesión del autor de la llamada.
Valor | |
---|---|
Tipo de entrada | System.String |
Obligatorio | No |
Valor si no se establece | $null |
Acepta caracteres comodín | No |
El valor debe ser la ruta de acceso a una de las siguientes opciones:
- un script (
.ps1
) - un módulo de script (
.psm1
) - un manifiesto de módulo (
.psd1
) - un ensamblado (
.dll
) - un archivo XML de definición de cmdlet (
.cdxml
) - un flujo de trabajo de Windows PowerShell 5.1 (
.xaml
)
La ruta de acceso debe ser relativa al manifiesto del módulo.
Si un manifiesto de módulo no tiene ningún archivo raíz designado en la clave RootModule , el manifiesto se convierte en el archivo principal del módulo y el módulo se convierte en un módulo de manifiesto (ModuleType = Manifiesto). Cuando se define RootModule , el tipo del módulo se determina a partir de la extensión de archivo usada:
- un
.ps1
archivo o.psm1
hace que el tipo de módulo Script - un
.psd1
archivo hace que el tipo de módulo Manifiesto - un
.dll
archivo hace que el tipo de módulo Binary - un
.cdxml
archivo hace que el tipo de módulo CIM - un
.xaml
archivo hace que el tipo de módulo Flujo de trabajo
De forma predeterminada, se exportan todos los miembros del módulo de RootModule .
Sugerencia
La velocidad de carga de módulos difiere entre los tipos de módulo Binary, Script y CIM . Para más información, consulte Consideraciones de creación de módulos de PowerShell.
Por ejemplo, moduleType de este módulo es Manifest. Los únicos miembros del módulo que este módulo puede exportar son los definidos en los módulos especificados con la configuración NestedModules .
@{
RootModule = ''
}
Nota:
Esta configuración también se puede especificar en manifiestos de módulo como ModuleToProcess. Aunque ese nombre para esta configuración es válido, se recomienda usar RootModule en su lugar.
ModuleVersion
Esta configuración especifica la versión del módulo. Cuando existen varias versiones de un módulo en un sistema, la versión más reciente se carga de forma predeterminada al ejecutar Import-Module
.
Valor | |
---|---|
Tipo de entrada | System.String |
Obligatorio | Sí |
Valor si no se establece | None |
Acepta caracteres comodín | No |
El valor de esta configuración debe convertirse en System.Version
al ejecutar Import-Module
.
Por ejemplo, este manifiesto declara la versión del módulo como '1.2.3'
.
@{
ModuleVersion = '1.2.3'
}
Al importar el módulo e inspeccionar la propiedad Version , tenga en cuenta que es un objeto System.Version y no una cadena:
$ExampleModule = Import-Module example.psd1
$ExampleModule.Version
$ExampleModule.Version.GetType().Name
Major Minor Build Revision
----- ----- ----- --------
1 2 3 -1
Version
CompatiblePSEditions
Esta configuración especifica las PSEditions compatibles del módulo.
Valor | |
---|---|
Tipo de entrada | System.String[] |
Valores aceptados | Desktop , Core |
Obligatorio | No |
Valor si no se establece | $null |
Acepta caracteres comodín | No |
Si el valor de esta configuración es $null
, el módulo se puede importar independientemente del PSEdition de la sesión. Puede establecerlo en uno o varios de los valores aceptados.
Para obtener información sobre PSEdition, consulte:
Cuando se define esta configuración, el módulo solo se puede importar en una sesión donde el $PSEdition
valor de la variable automática se incluye en la configuración.
Nota:
Dado que la variable automática se introdujo en la $PSEdition
versión 5.1, las versiones anteriores de Windows PowerShell no pueden cargar un módulo que use la configuración CompatiblePSEditions .
Por ejemplo, puede importar este manifiesto de módulo en cualquier sesión:
@{
# CompatiblePSEditions = @()
}
Con la configuración especificada, este módulo solo se puede importar en sesiones donde el valor de la $PSEdition
variable automática es Core
.
@{
CompatiblePSEditions = @('Core')
}
GUID
Esta configuración especifica un identificador único para el módulo. El GUID se usa para distinguir entre módulos con el mismo nombre.
Valor | |
---|---|
Tipo de entrada | System.String |
Obligatorio | No |
Valor si no se establece | 00000000-0000-0000-0000-000000000000 |
Acepta caracteres comodín | No |
El valor de esta configuración debe convertirse en System.Guid
al ejecutar Import-Module
.
Precaución
Aunque no es una configuración necesaria, no especificar un GUID en un manifiesto no tiene ventajas y puede provocar colisiones de nombres para los módulos.
Puede crear un nuevo guid para usarlo en el manifiesto:
New-Guid | Select-Object -ExpandProperty Guid
8456b025-2fa5-4034-ae47-e6305f3917ca
@{
GUID = '8456b025-2fa5-4034-ae47-e6305f3917ca'
}
Si hay otro módulo en la máquina con el mismo nombre, puede importar el que desee especificando el nombre completo del módulo:
Import-Module -FullyQualifiedName @{
ModuleName = 'Example'
GUID = '8456b025-2fa5-4034-ae47-e6305f3917ca'
ModuleVersion = '1.0.0'
}
Autor
Esta configuración identifica al autor del módulo.
Valor | |
---|---|
Tipo de entrada | System.String |
Obligatorio | Galería de PowerShell |
Valor si no se establece | $null |
Acepta caracteres comodín | No |
Este manifiesto declara que el autor del módulo es el equipo de experiencia del desarrollador de Contoso.
@{
Author = 'Contoso Developer Experience Team'
}
CompanyName
Esta configuración identifica la empresa o el proveedor que creó el módulo.
Valor | |
---|---|
Tipo de entrada | System.String |
Obligatorio | No |
Valor si no se establece | $null |
Acepta caracteres comodín | No |
Este manifiesto declara que el módulo fue creado por Contoso, Ltd.
@{
CompanyName = 'Contoso, Ltd.'
}
Copyright
Esta configuración especifica una declaración de copyright para el módulo.
Valor | |
---|---|
Tipo de entrada | System.String |
Obligatorio | No |
Valor si no se establece | $null |
Acepta caracteres comodín | No |
Este manifiesto declara una declaración de copyright que reserva todos los derechos a Contoso, Ltd. a partir de 2022.
@{
Copyright = '(c) 2022 Contoso, Ltd. All rights reserved.'
}
Descripción
Esta configuración describe el módulo en un nivel alto.
Valor | |
---|---|
Tipo de entrada | System.String |
Obligatorio | Galería de PowerShell |
Valor si no se establece | $null |
Acepta caracteres comodín | No |
Este manifiesto incluye una breve descripción. También puede usar una cadena aquí para escribir una descripción más larga o de varias líneas.
@{
Description = 'Example commands to show a valid module manifest'
}
PowerShellVersion
Esta configuración especifica la versión mínima de PowerShell que requiere este módulo.
Valor | |
---|---|
Tipo de entrada | System.String |
Obligatorio | No |
Valor si no se establece | $null |
Acepta caracteres comodín | No |
El valor de esta configuración debe convertirse en System.Version
al ejecutar Import-Module
.
Si no se establece esta configuración, PowerShell no restringe la importación del módulo en función de la versión actual.
Por ejemplo, este manifiesto declara que el módulo es compatible con cada versión de PowerShell y Windows PowerShell.
@{
# PowerShellVersion = ''
}
Con PowerShellVersion establecido 7.2
en , solo puede importar el módulo en PowerShell 7.2 o superior.
@{
PowerShellVersion = '7.2'
}
PowerShellHostName
Esta configuración especifica el nombre del programa host de PowerShell que requiere el módulo, como Host de ISE de Windows PowerShell o ConsoleHost.
Valor | |
---|---|
Tipo de entrada | System.String |
Obligatorio | No |
Valor si no se establece | $null |
Acepta caracteres comodín | No |
Puede encontrar el nombre del host para una sesión con la $Host.Name
instrucción . Por ejemplo, puede ver que el host de una sesión remota es ServerRemoteHost en lugar de ConsoleHost:
$Host.Name
Enter-PSSession -ComputerName localhost
$Host.Name
ConsoleHost
[localhost]: PS C:\Users\username\Documents> $Host.Name
ServerRemoteHost
Este módulo se puede importar en cualquier host.
@{
# PowerShellHostName = ''
}
Con PowerShellHostName establecido en ServerRemoteHost
, solo puede importar el módulo en una sesión remota de PowerShell.
@{
PowerShellHostName = 'ServerRemoteHost'
}
PowerShellHostVersion
Esta configuración especifica la versión mínima de un programa host de PowerShell que requiere el módulo.
Valor | |
---|---|
Tipo de entrada | System.String |
Obligatorio | No |
Valor si no se establece | $null |
Acepta caracteres comodín | No |
El valor de esta configuración debe convertirse en System.Version
al ejecutar Import-Module
.
Precaución
Aunque esta configuración se puede usar sin la configuración powerShellHostName , aumenta las probabilidades de un comportamiento inesperado. Use solo esta configuración cuando también use la configuración PowerShellHostName .
Por ejemplo, el módulo de este manifiesto se puede importar desde cualquier sesión de PowerShell que se ejecute en ConsoleHost, independientemente de la versión del host.
@{
PowerShellHostName = 'ConsoleHost'
# PowerShellHostVersion = ''
}
Con PowerShellHostVersion establecido 5.1
en , solo puede importar el módulo desde cualquier sesión de PowerShell que se ejecute en ConsoleHost donde la versión del host sea 5.1 o posterior.
@{
PowerShellHostName = 'ConsoleHost'
PowerShellHostVersion = '5.1'
}
DotNetFrameworkVersion
Esta configuración especifica la versión mínima de Microsoft .NET Framework que requiere el módulo.
Valor | |
---|---|
Tipo de entrada | System.String |
Obligatorio | No |
Valor si no se establece | $null |
Acepta caracteres comodín | No |
Nota:
Esta configuración solo es válida para la edición de PowerShell Desktop, como Windows PowerShell 5.1, y solo se aplica a versiones de .NET Framework inferiores a la 4.5. Este requisito no tiene ningún efecto para las versiones más recientes de PowerShell o .NET Framework.
El valor de esta configuración debe convertirse en System.Version
al ejecutar Import-Module
.
Por ejemplo, este manifiesto declara que su módulo se puede importar en cualquier sesión de PowerShell o Windows PowerShell, independientemente de la versión de Microsoft .NET Framework.
@{
# DotNetFrameworkVersion = ''
}
Con DotNetFrameworkVersion establecido 4.0
en , puede importar este módulo en cualquier sesión de Windows PowerShell donde la versión más reciente disponible de Microsoft .NET Framework sea al menos 4.0. También puede importarlo en cualquier sesión de PowerShell.
@{
DotNetFrameworkVersion = '4.0'
}
CLRVersion
Esta configuración especifica la versión mínima de Common Language Runtime (CLR) de Microsoft .NET Framework que requiere el módulo.
Valor | |
---|---|
Tipo de entrada | System.String |
Obligatorio | No |
Valor si no se establece | $null |
Acepta caracteres comodín | No |
Nota:
Esta configuración solo es válida para la edición de PowerShell Desktop, como Windows PowerShell 5.1, y solo se aplica a versiones de .NET Framework inferiores a la 4.5. Este requisito no tiene ningún efecto para las versiones más recientes de PowerShell o .NET Framework.
El valor de esta configuración debe convertirse en System.Version
al ejecutar Import-Module
.
Por ejemplo, este manifiesto declara que su módulo se puede importar en cualquier sesión de PowerShell o Windows PowerShell, independientemente de la versión de CLR de Microsoft .NET Framework.
@{
# CLRVersion = ''
}
Con CLRVersion establecido 4.0
en , puede importar este módulo en cualquier sesión de Windows PowerShell donde la versión más reciente disponible de CLR sea al menos 4.0. También puede importarlo en cualquier sesión de PowerShell.
@{
CLRVersion = '4.0'
}
ProcessorArchitecture
Esta configuración especifica la arquitectura del procesador que requiere el módulo.
Valor | |
---|---|
Tipo de entrada | System.String |
Valores aceptados | None , MSIL , X86 , IA64 , , Amd64 , Arm |
Obligatorio | No |
Valor si no se establece | None |
Acepta caracteres comodín | No |
El valor de esta configuración debe convertirse en System.Reflection.ProcessorArchitecture
al ejecutar Import-Module
.
Por ejemplo, este manifiesto declara que su módulo se puede importar en cualquier sesión, independientemente de la arquitectura del procesador del sistema.
@{
# ProcessorArchitecture = ''
}
Con ProcessorArchitecture establecido Amd64
en , solo puede importar este módulo en una sesión que se ejecuta en una máquina con una arquitectura coincidente.
@{
ProcessorArchitecture = 'Amd64'
}
RequiredModules
Esta configuración especifica los módulos que deben estar en el estado de sesión global. Si los módulos necesarios no están en el estado de sesión global, PowerShell los importa.
Si los módulos necesarios no están disponibles, se produce un error en el Import-Module
comando.
Valor | |
---|---|
Tipo de entrada | System.String[] , System.Collections.Hashtable[] |
Obligatorio | No |
Valor si no se establece | $null |
Acepta caracteres comodín | No |
Las entradas de esta configuración pueden ser un nombre de módulo, una especificación de módulo completa o una ruta de acceso a un archivo de módulo.
Cuando el valor es una ruta de acceso, la ruta de acceso puede ser completa o relativa.
Cuando el valor es un nombre o especificación de módulo, PowerShell busca en el módulo especificado la psModulePath .
Una especificación de módulo es una tabla hash que tiene las siguientes claves.
ModuleName
- Necesario. Especifica el nombre del módulo.GUID
- Opcional. Especifica el GUID del módulo.- También es necesario especificar al menos una de las tres claves siguientes. La
RequiredVersion
clave no se puede usar con lasModuleVersion
claves oMaximumVersion
. Puede definir un intervalo de versiones aceptable para el módulo especificando lasModuleVersion
claves yMaximumVersion
juntas.ModuleVersion
: especifica una versión mínima aceptable del módulo.RequiredVersion
: especifica una versión exacta y necesaria del módulo.MaximumVersion
: especifica la versión máxima aceptable del módulo.
Nota:
RequiredVersion
se agregó en Windows PowerShell 5.0.
MaximumVersion
se agregó en Windows PowerShell 5.1.
Por ejemplo, este manifiesto declara que su módulo no requiere ningún otro módulo para su funcionalidad.
@{
# RequiredModules = @()
}
Este manifiesto declara que requiere el módulo PSReadLine. Cuando se ejecuta Import-Module
en este manifiesto, PowerShell importa la versión más reciente de PSReadLine que está disponible para la sesión. Si no hay ninguna versión disponible, la importación devuelve un error.
@{
RequiredModules = @(
'PSReadLine'
)
}
Sugerencia
En PowerShell 2.0, Import-Module
no importa automáticamente los módulos necesarios. Solo comprueba que los módulos necesarios están en estado de sesión global.
Este manifiesto declara que requiere una versión del módulo PSReadLine proveedor en su propia carpeta de módulos. Cuando se ejecuta Import-Module
en este manifiesto, PowerShell importa el PSReadLine proveedor desde la ruta de acceso especificada.
@{
RequiredModules = @(
'Vendored\PSReadLine\PSReadLine.psd1'
)
}
Este manifiesto declara que requiere específicamente la versión 2.0.0 del módulo PSReadLine. Cuando se ejecuta Import-Module
en este manifiesto, PowerShell importa la versión 2.0.0 de PSReadLine si está disponible. Si no está disponible, Import-Module
devuelve un error.
@{
RequiredModules = @(
@{
ModuleName = 'PSReadLine'
RequiredVersion = '2.0.0'
}
)
}
Este manifiesto declara que requiere que el módulo PSReadLine se importe en la versión 2.0.0 o posterior.
@{
RequiredModules = @(
@{
ModuleName = 'PSReadLine'
ModuleVersion = '2.0.0'
}
)
}
Este manifiesto declara que requiere que el módulo PSReadLine se importe en la versión 2.0.0 o inferior.
@{
RequiredModules = @(
@{
ModuleName = 'PSReadLine'
MaximumVersion = '2.0.0'
}
)
}
Este manifiesto declara que requiere que el módulo PSDesiredStateConfiguration se importe en una versión igual o superior a la 2.0.0, pero no superior a 2.99.99.
@{
RequiredModules = @(
@{
ModuleName = 'PSDesiredStateConfiguration'
ModuleVersion = '2.0.0'
MaximumVersion = '2.99.99'
}
)
}
Ensamblados obligatorios
Esta configuración especifica los archivos de ensamblado (.dll
) que requiere el módulo.
PowerShell carga los ensamblados especificados antes de actualizar tipos o formatos, importar módulos anidados o importar el archivo de módulo especificado en el valor de la clave RootModule .
Valor | |
---|---|
Tipo de entrada | System.String[] |
Obligatorio | No |
Valor si no se establece | $null |
Acepta caracteres comodín | No |
Las entradas de esta configuración pueden ser el nombre de archivo de un ensamblado o la ruta de acceso a una. Enumere todos los ensamblados necesarios, incluso si también se muestran como módulos binarios en la configuración NestedModules .
Este manifiesto requiere el example.dll
ensamblado. Antes de cargar los archivos de formato o tipo especificados en este manifiesto, PowerShell carga example.dll
desde la Assemblies
carpeta ubicada en el mismo directorio que el manifiesto del módulo.
@{
RequiredAssemblies = @(
'Assemblies\Example.dll'
)
}
ScriptsToProcess
Esta configuración especifica los archivos de script (.ps1
) que se ejecutan en el estado de sesión del autor de la llamada cuando se importa el módulo. Puede usar estos scripts para preparar un entorno, igual que podría utilizar un script de inicio de sesión.
Valor | |
---|---|
Tipo de entrada | System.String[] |
Obligatorio | No |
Valor si no se establece | $null |
Acepta caracteres comodín | No |
Para especificar scripts que se ejecutan en el estado de sesión del módulo, use la clave NestedModules .
Al importar este manifiesto, PowerShell ejecuta en la Initialize.ps1
sesión actual.
@{
ScriptsToProcess = @(
'Scripts\Initialize.ps1'
)
}
Por ejemplo, si Initialize.ps1
escribe mensajes informativos y establece la $ExampleState
variable :
if ([string]::IsNullOrEmpty($ExampleState)) {
Write-Information "Example not initialized."
Write-Information "Initializing now..."
$ExampleState = 'Initialized'
} else {
Write-Information "Example already initialized."
}
Al importar el módulo, el script se ejecuta, escribiendo esos mensajes y estableciendo $ExampleState
en la sesión.
$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
Esta configuración especifica los archivos de tipo (.ps1xml
) que se ejecutan cuando se importa el módulo.
Valor | |
---|---|
Tipo de entrada | System.String[] |
Obligatorio | No |
Valor si no se establece | $null |
Acepta caracteres comodín | No |
Al importar el módulo, PowerShell ejecuta el Update-TypeData
cmdlet con los archivos especificados. Dado que los archivos de tipo no tienen ámbito, afectan a todos los estados de sesión de la sesión.
Para obtener más información sobre los archivos de tipo, consulte about_Types.ps1xml.
Por ejemplo, al importar este manifiesto, PowerShell carga los tipos especificados en el archivo desde la Example.ps1xml
Types
carpeta ubicada en el mismo directorio que el manifiesto del módulo.
@{
TypesToProcess = @(
'Types\Example.ps1xml'
)
}
FormatsToProcess
Esta configuración especifica los archivos de formato (.ps1xml
) que se ejecutan cuando se importa el módulo.
Valor | |
---|---|
Tipo de entrada | System.String[] |
Obligatorio | No |
Valor si no se establece | $null |
Acepta caracteres comodín | No |
Al importar un módulo, PowerShell ejecuta el Update-FormatData
cmdlet con los archivos especificados. Dado que los archivos de formato no tienen ámbito, afectan a todos los estados de sesión de la sesión.
Para obtener más información sobre los archivos de tipo, consulte about_Format.ps1xml.
Por ejemplo, al importar este módulo, PowerShell carga los formatos especificados en el archivo desde la Example.ps1xml
Formats
carpeta ubicada en el mismo directorio que el manifiesto del módulo.
@{
FormatsToProcess = @(
'Formats\Example.ps1xml'
)
}
NestedModules
Esta configuración especifica los módulos de script (.psm1
) y los módulos binarios (.dll
) que se importan en el estado de sesión del módulo. También puede especificar archivos de script (.ps1
). Los archivos de esta configuración se ejecutan en el orden en que se muestran.
Valor | |
---|---|
Tipo de entrada | System.String[] , System.Collections.Hashtable[] |
Obligatorio | No |
Valor si no se establece | $null |
Acepta caracteres comodín | No |
Las entradas de esta configuración pueden ser un nombre de módulo, una especificación de módulo completa o una ruta de acceso a un módulo o archivo de script.
Cuando el valor es una ruta de acceso, la ruta de acceso puede ser completa o relativa.
Cuando el valor es un nombre de módulo o una especificación, PowerShell busca en psModulePath el módulo especificado.
Una especificación de módulo es una tabla hash que tiene las siguientes claves.
ModuleName
- Necesario. Especifica el nombre del módulo.GUID
- Opcional. Especifica el GUID del módulo.- También es necesario especificar al menos una de las tres claves siguientes. La
RequiredVersion
clave no se puede usar con lasModuleVersion
claves oMaximumVersion
. Puede definir un intervalo de versiones aceptable para el módulo especificando lasModuleVersion
claves yMaximumVersion
juntas.ModuleVersion
: especifica una versión mínima aceptable del módulo.RequiredVersion
: especifica una versión exacta y necesaria del módulo.MaximumVersion
: especifica la versión máxima aceptable del módulo.
Nota:
RequiredVersion
se agregó en Windows PowerShell 5.0.
MaximumVersion
se agregó en Windows PowerShell 5.1.
Los elementos que necesiten exportarse desde un módulo anidado deben exportarse mediante el módulo anidado mediante el Export-ModuleMember
cmdlet o aparecer en una de las propiedades de exportación:
- FunctionsToExport
- CmdletsToExport
- VariablesToExport
- AliasesToExport
Los módulos anidados en el estado de sesión del módulo están disponibles para el módulo raíz, pero no los devuelve un Get-Module
comando en el estado de sesión del autor de la llamada.
Los scripts (.ps1
) que aparecen en esta configuración se ejecutan en el estado de sesión del módulo, no en el estado de sesión del autor de la llamada. Para ejecutar un script en el estado de sesión del autor de la llamada, enumere el nombre de archivo del script en la configuración ScriptsToProcess .
Por ejemplo, al importar este manifiesto, el Helpers.psm1
módulo se carga en el estado de sesión del módulo raíz. Los cmdlets declarados en el módulo anidado se exportan a menos que esté restringido de otro modo.
@{
NestedModules = @(
'Helpers\Helpers.psm1'
)
}
FunctionsToExport
Esta configuración especifica las funciones que exporta el módulo. Puede usar esta configuración para restringir las funciones que exporta el módulo. Puede quitar funciones de la lista de funciones exportadas, pero no puede agregar funciones a la lista.
Valor | |
---|---|
Tipo de entrada | System.String[] |
Obligatorio | No |
Valor si no se establece | $null |
Acepta caracteres comodín | Sí |
Puede especificar entradas en esta configuración con caracteres comodín. Se exportan todas las funciones coincidentes de la lista de funciones exportadas.
Sugerencia
Para obtener rendimiento y detectabilidad, siempre debe enumerar explícitamente las funciones que desea que el módulo exporte en esta configuración sin usar caracteres comodín.
Por ejemplo, al importar un módulo con la configuración comentada, se exportan todas las funciones del módulo raíz y los módulos anidados.
@{
# FunctionsToExport = @()
}
Este manifiesto es funcionalmente idéntico a no especificar la configuración en absoluto.
@{
FunctionsToExport = '*'
}
Con FunctionsToExport establecido como una matriz vacía, al importar este módulo no hay funciones disponibles el módulo raíz o cualquier exportación de módulos anidados.
@{
FunctionsToExport = @()
}
Nota:
Si crea el manifiesto del módulo con el New-ModuleManifest
comando y no especifica el parámetro FunctionsToExport , el manifiesto creado tiene esta configuración especificada como una matriz vacía. A menos que edite el manifiesto, no se exporta ninguna función del módulo.
Con FunctionsToExport establecido para incluir solo la Get-Example
función, al importar este módulo solo está disponible la Get-Example
función, incluso si el módulo raíz exportó otras funciones o módulos anidados.
@{
FunctionsToExport = @(
'Get-Example'
)
}
Con FunctionsToExport establecido con una cadena comodín, al importar este módulo cualquier función cuyo nombre termine con Example
está disponible, incluso si el módulo raíz exportó otras funciones como miembros del módulo o módulos anidados.
@{
FunctionsToExport = @(
'*Example'
)
}
CmdletsToExport
Esta configuración especifica los cmdlets que exporta el módulo. Puede usar esta configuración para restringir los cmdlets exportados por el módulo. Puede quitar cmdlets de la lista de miembros de módulo exportados, pero no puede agregar cmdlets a la lista.
Valor | |
---|---|
Tipo de entrada | System.String[] |
Obligatorio | No |
Valor si no se establece | $null |
Acepta caracteres comodín | Sí |
Puede especificar entradas en esta configuración con caracteres comodín. Se exportan todos los cmdlets coincidentes de la lista de cmdlets exportados.
Sugerencia
Para obtener rendimiento y detectabilidad, siempre debe enumerar explícitamente los cmdlets que desea que el módulo exporte en esta configuración sin usar caracteres comodín.
Por ejemplo, al importar un módulo con esta configuración comentada, se exportan todos los cmdlets del módulo raíz y los módulos anidados.
@{
# CmdletsToExport = @()
}
Este manifiesto es funcionalmente idéntico a no especificar la configuración en absoluto.
@{
CmdletsToExport = '*'
}
Con CmdletsToExport establecido como una matriz vacía, al importar este módulo, no hay ningún cmdlet en el módulo raíz o en ninguna exportación de módulos anidados.
@{
CmdletsToExport = @()
}
Nota:
Si crea el manifiesto del módulo con el New-ModuleManifest
comando y no especifica el parámetro CmdletsToExport , el manifiesto creado tiene esta configuración especificada como una matriz vacía. A menos que edite el manifiesto, no se exporta ningún cmdlet del módulo.
Con CmdletsToExport establecido para incluir solo el Get-Example
cmdlet, al importar este módulo solo está disponible el Get-Example
cmdlet, incluso si el módulo raíz exportó otros cmdlets o módulos anidados.
@{
CmdletsToExport = @(
'Get-Example'
)
}
Con CmdletsToExport establecido con una cadena con caracteres comodín, al importar este módulo cualquier cmdlet cuyo nombre termine con Example
está disponible, incluso si otros cmdlets se exportaron como miembros del módulo mediante el módulo raíz o los módulos anidados.
@{
CmdletsToExport = @(
'*Example'
)
}
VariablesToExport
Esta configuración especifica las variables que exporta el módulo. Puede usar esta configuración para restringir las variables que exporta el módulo. Puede quitar variables de la lista de miembros del módulo exportados, pero no puede agregar variables a la lista.
Valor | |
---|---|
Tipo de entrada | System.String[] |
Obligatorio | No |
Valor si no se establece | $null |
Acepta caracteres comodín | Sí |
Puede especificar entradas en esta configuración con caracteres comodín. Se exportan todas las variables coincidentes de la lista de miembros del módulo exportado.
Sugerencia
Para obtener rendimiento y detectabilidad, siempre debe enumerar explícitamente las variables que desea que el módulo exporte en esta configuración sin usar caracteres comodín.
Por ejemplo, al importar un módulo con esta configuración comentada, se exportan todas las variables del módulo raíz y los módulos anidados.
@{
# VariablesToExport = @()
}
Este manifiesto es funcionalmente idéntico a no especificar la configuración en absoluto.
@{
VariablesToExport = '*'
}
Nota:
Si crea el manifiesto del módulo con el New-ModuleManifest
comando y no especifica el parámetro VariablesToExport , el manifiesto creado tiene esta configuración especificada como '*'
. A menos que edite el manifiesto, se exportan todas las variables del módulo.
Con VariablesToExport establecido como una matriz vacía, al importar este módulo no hay ninguna variable disponible el módulo raíz o cualquier exportación de módulos anidados.
@{
VariablesToExport = @()
}
Con VariablesToExport establecido para incluir solo la SomeExample
variable, al importar este módulo solo está disponible la $SomeExample
variable, aunque el módulo raíz haya exportado otras variables o módulos anidados.
@{
VariablesToExport = @(
'SomeExample'
)
}
Con VariablesToExport establecido con una cadena con caracteres comodín, al importar este módulo cualquier variable cuyo nombre termine con Example
está disponible, incluso si el módulo raíz exportó otras variables como miembros del módulo o módulos anidados.
@{
VariablesToExport = @(
'*Example'
)
}
DscResourcesToExport
Esta configuración especifica los recursos de DSC que exporta el módulo. Puede usar esta configuración para restringir los recursos de DSC basados en clases que exporta el módulo. Puede quitar recursos de DSC de la lista de miembros del módulo exportados, pero no puede agregar recursos de DSC a la lista.
Valor | |
---|---|
Tipo de entrada | System.String[] |
Obligatorio | No |
Valor si no se establece | $null |
Acepta caracteres comodín | Sí |
Puede especificar entradas en esta configuración con caracteres comodín. Se exportan todos los recursos de DSC basados en clases coincidentes en el módulo.
Sugerencia
Para la detectabilidad, siempre debe enumerar explícitamente todos los recursos de DSC que exporta el módulo.
Para obtener más información sobre la creación y el uso de recursos de DSC, consulte la documentación de DSC.
Este manifiesto exporta todos los recursos de DSC basados en clases y basados en MOF definidos en el módulo raíz y todos los módulos anidados.
@{
# DscResourcesToExport = @()
}
Este manifiesto exporta todos los recursos de DSC basados en MOF definidos en el módulo raíz y todos los módulos anidados, pero solo un recurso de DSC basado en clases, ExampleClassResource
.
@{
DscResourcesToExport = @(
'ExampleClassResource'
)
}
Este manifiesto exporta todos los recursos de DSC que incluye. Incluso si el recurso basado en MOF no aparece en la lista, el módulo todavía lo exportaría.
@{
DscResourcesToExport = @(
'ExampleClassResource'
'ExampleMofResourceFirst'
)
}
ModuleList
Esta configuración es una lista de inventario informativo de los módulos incluidos en este. Esta lista no afecta al comportamiento del módulo.
Valor | |
---|---|
Tipo de entrada | System.String[] , System.Collections.Hashtable[] |
Obligatorio | No |
Valor si no se establece | $null |
Acepta caracteres comodín | No |
Las entradas de esta configuración pueden ser un nombre de módulo, una especificación de módulo completa o una ruta de acceso a un módulo o archivo de script.
Cuando el valor es una ruta de acceso, la ruta de acceso puede ser completa o relativa.
Cuando el valor es un nombre de módulo o una especificación, PowerShell busca en psModulePath el módulo especificado.
Una especificación de módulo es una tabla hash que tiene las siguientes claves.
ModuleName
- Necesario. Especifica el nombre del módulo.GUID
- Opcional. Especifica el GUID del módulo.- También es necesario especificar al menos una de las tres claves siguientes. La
RequiredVersion
clave no se puede usar con lasModuleVersion
claves oMaximumVersion
. Puede definir un intervalo de versiones aceptable para el módulo especificando lasModuleVersion
claves yMaximumVersion
juntas.ModuleVersion
: especifica una versión mínima aceptable del módulo.RequiredVersion
: especifica una versión exacta y necesaria del módulo.MaximumVersion
: especifica la versión máxima aceptable del módulo.
Nota:
RequiredVersion
se agregó en Windows PowerShell 5.0.
MaximumVersion
se agregó en Windows PowerShell 5.1.
Este manifiesto no proporciona una lista informativa de los módulos que incluye. Puede o no tener módulos. Aunque no se especifica esta configuración, los módulos enumerados en la configuración RootModule, ScriptsToProcess o NestedModules se comportan normalmente.
@{
# ModuleList = @()
}
Este manifiesto declara que los únicos módulos que incluye son Example.psm1
y los submódulos First.psm1
y Second.psm1
en la Submodules
carpeta .
@{
ModuleList = @(
'Example.psm1'
'Submodules\First.psm1'
'Submodules\Second.psm1'
)
}
Lista de archivos
Esta configuración es una lista de inventario informativo de los archivos incluidos en este módulo. Esta lista no afecta al comportamiento del módulo.
Valor | |
---|---|
Tipo de entrada | System.String[] |
Obligatorio | No |
Valor si no se establece | $null |
Acepta caracteres comodín | Sí |
Las entradas de esta configuración deben ser la ruta de acceso relativa a un archivo de la carpeta que contiene el manifiesto del módulo.
Cuando un usuario llama Get-Module
a en un manifiesto con esta configuración definida, la propiedad FileList contiene la ruta de acceso completa a estos archivos, uniendo la ruta de acceso del módulo con la ruta de acceso relativa de cada entrada.
Este manifiesto no incluye una lista de sus archivos.
@{
# FileList = @()
}
Este manifiesto declara que los únicos archivos que incluye se muestran en esta configuración.
@{
FileList = @(
'Example.psd1'
'Example.psm1'
'Assemblies\Example.dll'
'Scripts\Initialize.ps1'
'Submodules\First.psm1'
'Submodules\Second.psm1'
)
}
PrivateData
Esta configuración define una tabla hash de datos que está disponible para los comandos o funciones del ámbito del módulo raíz.
Valor | |
---|---|
Tipo de entrada | System.Collections.Hashtable |
Obligatorio | Galería de PowerShell, Crescendo |
Valor si no se establece | $null |
Acepta caracteres comodín | No |
Al exportar un manifiesto de Crescendo para crear un nuevo módulo, Export-CrescendoModule
agrega dos claves a PrivateData.
- CrescendoGenerated : marca de tiempo cuando se exportó el módulo
- CrescendoVersion : la versión de Crescendo usada para exportar el módulo
Puede agregar sus propias claves para almacenar los metadatos de los que desea realizar el seguimiento. Las claves agregadas a esta configuración están disponibles para funciones y cmdlets en el módulo raíz mediante $MyInvocation.MyCommand.Module.PrivateData
. La tabla hash no está disponible en el propio ámbito del módulo, solo en los cmdlets que defina en el módulo.
Por ejemplo, este manifiesto define la clave PublishedDate en PrivateData.
@{
PrivateData = @{
PublishedDate = '2022-06-01'
}
}
Los cmdlets del módulo pueden acceder a este valor con la $MyInvocation
variable .
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"
}
}
Una vez importado el módulo, la función usa el valor de PrivateData para determinar cuándo se publicó el módulo.
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
La propiedad secundaria PSData define una tabla hash de valores que admiten escenarios de extensión específicos.
Valor | |
---|---|
Tipo de entrada | System.Collections.Hashtable |
Obligatorio | Galería de PowerShell, características experimentales, módulos crescendo |
Valor si no se establece | $null |
Acepta caracteres comodín | No |
La propiedad secundaria PSData se usa para los escenarios siguientes:
- Galería de PowerShell: al crear un manifiesto de módulo mediante
New-ModuleManifest
el cmdlet rellena previamente la tabla hash PSData con claves de marcador de posición necesarias al publicar el módulo en el Galería de PowerShell. Para obtener más información sobre los manifiestos de módulo y la publicación en la Galería de PowerShell, consulte Valores de manifiesto del paquete que afectan a la interfaz de usuario de Galería de PowerShell. - Características experimentales: los metadatos sobre una característica experimental se conservan en la propiedad ExperimentalFeatures de PSData. La propiedad ExperimentalFeatures es una matriz de tablas hash que contienen el nombre y la descripción de la característica. Para obtener más información, consulte Declaración de características experimentales en módulos.
- Módulos de Crescendo: al exportar un manifiesto de Crescendo para crear un nuevo módulo,
Export-CrescendoModule
agrega el valorCrescendoBuilt
a la propiedad PSData.Tags . Puede usar esta etiqueta para buscar módulos en la Galería de PowerShell que se crearon mediante Crescendo. Para obtener más información, vea Export-CrescendoModule.
HelpInfoURI
Esta configuración especifica la dirección de Internet del archivo XML HelpInfo para el módulo.
Valor | |
---|---|
Tipo de entrada | System.String |
Obligatorio | No |
Valor si no se establece | $null |
Acepta caracteres comodín | No |
El valor de esta configuración debe ser un identificador uniforme de recursos (URI) que comience por http o https.
El archivo XML HelpInfo admite la característica ayuda actualizable que se introdujo en PowerShell 3.0. Contiene información sobre la ubicación de los archivos de ayuda descargable del módulo y los números de versión de los archivos de ayuda más recientes para cada configuración regional compatible.
Para obtener información sobre la Ayuda actualizable, consulte about_Updatable_Help. Para obtener información sobre el archivo XML HelpInfo, vea Compatibilidad con la Ayuda actualizable.
Por ejemplo, este módulo admite ayuda actualizable.
@{
HelpInfoUri = 'http://https://go.microsoft.com/fwlink/?LinkID=603'
}
DefaultCommandPrefix
Esta configuración especifica un prefijo que se antepone a los nombres de todos los comandos del módulo cuando se importan en una sesión. Los prefijos ayudan a evitar conflictos de nombres de comando en la sesión de un usuario.
Valor | |
---|---|
Tipo de entrada | System.String |
Obligatorio | No |
Valor si no se establece | $null |
Acepta caracteres comodín | No |
Los usuarios del módulo pueden invalidar este prefijo especificando el parámetro Prefix del Import-Module
cmdlet.
Esta configuración se introdujo en PowerShell 3.0.
Cuando se importa este manifiesto, los cmdlets importados desde este módulo se han Example
antepuesto al nombre en su nombre. Por ejemplo, Get-Item
se importa como Get-ExampleItem
.
@{
DefaultCommandPrefix = 'Example'
}