about_Module_Manifests
Descrizione breve
Vengono descritte le impostazioni e le procedure per la scrittura di file manifesto del modulo.
Descrizione lunga
Un manifesto del modulo è un file di dati di PowerShell (.psd1
) contenente una tabella hash.
Le coppie keys-value nella tabella hash descrivono il contenuto e gli attributi del modulo, definiscono i prerequisiti e controllano la modalità di elaborazione dei componenti.
I manifesti non sono necessari per caricare un modulo, ma devono pubblicare un modulo in PowerShell Gallery. I manifesti consentono anche di separare l'implementazione del modulo dal modo in cui viene caricata. Con un manifesto è possibile definire i requisiti, la compatibilità, l'ordine di caricamento e altro ancora.
Quando si usa New-ModuleManifest
senza specificare parametri per le impostazioni del manifesto, scrive un file manifesto minimo. Il frammento di codice seguente mostra questo output predefinito, ritagliato di commenti e spaziatura per brevità:
@{
# 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 = ''
}
È possibile usare Test-ModuleManifest
per convalidare un manifesto del modulo prima di pubblicare il modulo. Test-ModuleManifest
restituisce un errore se il manifesto non è valido o non è possibile importare il modulo nella sessione corrente perché la sessione non soddisfa i requisiti impostati nel manifesto.
Uso del codice script in un manifesto del modulo
I valori assegnati alle impostazioni nel file manifesto possono essere espressioni valutate da PowerShell. In questo modo è possibile creare percorsi e assegnare valori in modo condizionale in base alle variabili.
Quando si importa un modulo usando Import-Module
, il manifesto viene valutato in Restricted
modalità lingua. Restricted
mode limita i comandi e le variabili che possono essere usati.
Comandi consentiti
Import-LocalizedData
ConvertFrom-StringData
Write-Host
Out-Host
Join-Path
Variabili consentite
$PSScriptRoot
$PSEdition
$EnabledExperimentalFeatures
- Qualsiasi variabile di ambiente, ad esempio
$ENV:TEMP
Per altre informazioni, vedere about_Language_Modes.
Impostazioni del manifesto
Le sezioni seguenti illustrano in dettaglio ogni impostazione disponibile in un manifesto del modulo e come usarle. Iniziano con un riepilogo dell'impostazione e sono seguiti da una matrice che elenca:
- Tipo di input: tipo di oggetto che è possibile specificare per questa impostazione nel manifesto.
- Obbligatorio: se questo valore è
Yes
, l'impostazione è necessaria sia per importare il modulo che per pubblicarlo in PowerShell Gallery. Se è , non è necessario per nessuno deiNo
due. Se èPowerShell Gallery
, è necessario solo per la pubblicazione in PowerShell Gallery. - Valore se non impostato: il valore di questa impostazione è stato importato e non impostato in modo esplicito.
- Accetta caratteri jolly: indica se questa impostazione può accettare o meno un valore con caratteri jolly.
RootModule
Questa impostazione specifica il file primario o radice del modulo. Quando il modulo viene importato, i membri esportati dal file del modulo radice vengono importati nello stato della sessione del chiamante.
Valore | |
---|---|
Tipo di input | System.String |
Obbligatorio | No |
Valore se non impostato | $null |
Accetta caratteri jolly | No |
Il valore deve essere il percorso di uno dei seguenti:
- uno script (
.ps1
) - un modulo script (
.psm1
) - un manifesto del modulo (
.psd1
) - un assembly (
.dll
) - un file XML di definizione del cmdlet (
.cdxml
) - Flusso di lavoro di Windows PowerShell 5.1 (
.xaml
)
Il percorso deve essere relativo al manifesto del modulo.
Se nella chiave RootModule non è stato designato alcun file radice, il manifesto diventa il file primario per il modulo e il modulo diventa un modulo manifesto (ModuleType = Manifesto). Quando rootModule è definito, il tipo del modulo viene determinato dall'estensione di file usata:
- un
.ps1
file o.psm1
crea il tipo di modulo Script - un
.psd1
file rende manifesto il tipo di modulo - un
.dll
file rende il tipo di modulo Binary - un
.cdxml
file rende il tipo di modulo CIM - un
.xaml
file rende il tipo di modulo Flusso di lavoro
Per impostazione predefinita, tutti i membri del modulo in RootModule vengono esportati.
Suggerimento
La velocità di caricamento dei moduli differisce tra i tipi di modulo Binary, Script e CIM . Per altre informazioni, vedere Considerazioni sulla creazione di moduli di PowerShell
Ad esempio, il ModuleType di questo modulo è Manifest. Gli unici membri del modulo che questo modulo può esportare sono quelli definiti nei moduli specificati con l'impostazione NestedModules .
@{
RootModule = ''
}
Nota
Questa impostazione può essere specificata anche nei manifesti del modulo come ModuleToProcess. Anche se il nome per questa impostazione è valido, è consigliabile usare RootModule .
ModuleVersion
Questa impostazione specifica la versione del modulo. Quando esistono più versioni di un modulo in un sistema, la versione più recente viene caricata per impostazione predefinita quando si esegue Import-Module
.
Valore | |
---|---|
Tipo di input | System.String |
Obbligatorio | Sì |
Valore se non impostato | None |
Accetta caratteri jolly | No |
Il valore di questa impostazione deve essere convertibile in System.Version
quando si esegue Import-Module
.
Ad esempio, questo manifesto dichiara la versione del modulo come '1.2.3'
.
@{
ModuleVersion = '1.2.3'
}
Quando si importa il modulo e si esamina la proprietà Version , si noti che si tratta di un oggetto System.Version e non di una stringa:
$ExampleModule = Import-Module example.psd1
$ExampleModule.Version
$ExampleModule.Version.GetType().Name
Major Minor Build Revision
----- ----- ----- --------
1 2 3 -1
Version
CompatiblePSEditions
Questa impostazione specifica le PSEditions compatibili del modulo.
Valore | |
---|---|
Tipo di input | System.String[] |
Valori accettati | Desktop , Core |
Obbligatorio | No |
Valore se non impostato | $null |
Accetta caratteri jolly | No |
Se il valore di questa impostazione è $null
, il modulo può essere importato indipendentemente dalla psedizione della sessione. È possibile impostarlo su uno o più valori accettati.
Per informazioni su PSEdition, vedere:
- about_PowerShell_Editions
- Moduli con edizioni di PowerShell compatibili.
Quando questa impostazione è definita, il modulo può essere importato solo in una sessione in cui il $PSEdition
valore della variabile automatica è incluso nell'impostazione.
Nota
Poiché la $PSEdition
variabile automatica è stata introdotta nella versione 5.1, le versioni precedenti di Windows PowerShell non possono caricare un modulo che usa l'impostazione CompatiblePSEditions .
Ad esempio, è possibile importare questo manifesto del modulo in qualsiasi sessione:
@{
# CompatiblePSEditions = @()
}
Con l'impostazione specificata, questo modulo può essere importato solo nelle sessioni in cui il $PSEdition
valore della variabile automatica è Core
.
@{
CompatiblePSEditions = @('Core')
}
GUID
Questa impostazione specifica un identificatore univoco per il modulo. Il GUID viene usato per distinguere i moduli con lo stesso nome.
Valore | |
---|---|
Tipo di input | System.String |
Obbligatorio | No |
Valore se non impostato | 00000000-0000-0000-0000-000000000000 |
Accetta caratteri jolly | No |
Il valore di questa impostazione deve essere convertibile in System.Guid
quando si esegue Import-Module
.
Attenzione
Anche se non è un'impostazione obbligatoria, non specificare un GUID in un manifesto non presenta alcun vantaggio e può causare conflitti di nomi per i moduli.
È possibile creare un nuovo GUID da usare nel manifesto:
New-Guid | Select-Object -ExpandProperty Guid
8456b025-2fa5-4034-ae47-e6305f3917ca
@{
GUID = '8456b025-2fa5-4034-ae47-e6305f3917ca'
}
Se nel computer è presente un altro modulo con lo stesso nome, è comunque possibile importare quello desiderato specificando il nome completo del modulo:
Import-Module -FullyQualifiedName @{
ModuleName = 'Example'
GUID = '8456b025-2fa5-4034-ae47-e6305f3917ca'
ModuleVersion = '1.0.0'
}
Autore
Questa impostazione identifica l'autore del modulo.
Valore | |
---|---|
Tipo di input | System.String |
Obbligatorio | PowerShell Gallery |
Valore se non impostato | $null |
Accetta caratteri jolly | No |
Questo manifesto dichiara che l'autore del modulo è il team contoso developer experience.
@{
Author = 'Contoso Developer Experience Team'
}
CompanyName
Questa impostazione identifica la società o il fornitore che ha creato il modulo.
Valore | |
---|---|
Tipo di input | System.String |
Obbligatorio | No |
Valore se non impostato | $null |
Accetta caratteri jolly | No |
Questo manifesto dichiara che il modulo è stato creato da Contoso, Ltd.
@{
CompanyName = 'Contoso, Ltd.'
}
Copyright
Questa impostazione specifica un'informativa sul copyright per il modulo.
Valore | |
---|---|
Tipo di input | System.String |
Obbligatorio | No |
Valore se non impostato | $null |
Accetta caratteri jolly | No |
Questo manifesto dichiara una dichiarazione di copyright riservando tutti i diritti a Contoso, Ltd. a partire dal 2022.
@{
Copyright = '(c) 2022 Contoso, Ltd. All rights reserved.'
}
Descrizione
Questa impostazione descrive il modulo a livello generale.
Valore | |
---|---|
Tipo di input | System.String |
Obbligatorio | PowerShell Gallery |
Valore se non impostato | $null |
Accetta caratteri jolly | No |
Questo manifesto include una breve descrizione. È anche possibile usare una stringa here per scrivere una descrizione più lunga o su più righe.
@{
Description = 'Example commands to show a valid module manifest'
}
PowerShellVersion
Questa impostazione specifica la versione minima di PowerShell richiesta da questo modulo.
Valore | |
---|---|
Tipo di input | System.String |
Obbligatorio | No |
Valore se non impostato | $null |
Accetta caratteri jolly | No |
Il valore di questa impostazione deve essere convertibile in System.Version
quando si esegue Import-Module
.
Se questa impostazione non è impostata, PowerShell non limita l'importazione del modulo in base alla versione corrente.
Ad esempio, questo manifesto dichiara che il modulo è compatibile con ogni versione di PowerShell e Windows PowerShell.
@{
# PowerShellVersion = ''
}
Con PowerShellVersion impostato su 7.2
, è possibile importare il modulo solo in PowerShell 7.2 o versione successiva.
@{
PowerShellVersion = '7.2'
}
PowerShellHostName
Questa impostazione specifica il nome del programma host di PowerShell richiesto dal modulo, ad esempio Host ISE di Windows PowerShell o ConsoleHost.
Valore | |
---|---|
Tipo di input | System.String |
Obbligatorio | No |
Valore se non impostato | $null |
Accetta caratteri jolly | No |
È possibile trovare il nome dell'host per una sessione con l'istruzione $Host.Name
. Ad esempio, è possibile notare che l'host per una sessione remota è ServerRemoteHost anziché ConsoleHost:
$Host.Name
Enter-PSSession -ComputerName localhost
$Host.Name
ConsoleHost
[localhost]: PS C:\Users\username\Documents> $Host.Name
ServerRemoteHost
Questo modulo può essere importato in qualsiasi host.
@{
# PowerShellHostName = ''
}
Con PowerShellHostName impostato su ServerRemoteHost
, è possibile importare il modulo solo in una sessione remota di PowerShell.
@{
PowerShellHostName = 'ServerRemoteHost'
}
PowerShellHostVersion
Questa impostazione specifica la versione minima di un programma host di PowerShell richiesto dal modulo.
Valore | |
---|---|
Tipo di input | System.String |
Obbligatorio | No |
Valore se non impostato | $null |
Accetta caratteri jolly | No |
Il valore di questa impostazione deve essere convertibile in System.Version
quando si esegue Import-Module
.
Attenzione
Anche se questa impostazione può essere usata senza l'impostazione PowerShellHostName , aumenta le probabilità di comportamenti imprevisti. Usare questa impostazione solo quando si usa anche l'impostazione PowerShellHostName .
Ad esempio, il modulo di questo manifesto può essere importato da qualsiasi sessione di PowerShell in esecuzione in ConsoleHost, indipendentemente dalla versione dell'host.
@{
PowerShellHostName = 'ConsoleHost'
# PowerShellHostVersion = ''
}
Con PowerShellHostVersion impostato su 5.1
, è possibile importare il modulo solo da qualsiasi sessione di PowerShell in esecuzione in ConsoleHost in cui la versione dell'host è 5.1 o successiva.
@{
PowerShellHostName = 'ConsoleHost'
PowerShellHostVersion = '5.1'
}
DotNetFrameworkVersion
Questa impostazione specifica la versione minima di Microsoft .NET Framework richiesta dal modulo.
Valore | |
---|---|
Tipo di input | System.String |
Obbligatorio | No |
Valore se non impostato | $null |
Accetta caratteri jolly | No |
Nota
Questa impostazione è valida solo per l'edizione di PowerShell Desktop, ad esempio Windows PowerShell 5.1 e si applica solo alle versioni di .NET Framework inferiori alla 4.5. Questo requisito non ha alcun effetto per le versioni più recenti di PowerShell o .NET Framework.
Il valore di questa impostazione deve essere convertibile in System.Version
quando si esegue Import-Module
.
Ad esempio, questo manifesto dichiara che il relativo modulo può essere importato in qualsiasi sessione di PowerShell o Windows PowerShell, indipendentemente dalla versione di Microsoft .NET Framework.
@{
# DotNetFrameworkVersion = ''
}
Con DotNetFrameworkVersion impostato su 4.0
, è possibile importare questo modulo in qualsiasi sessione di Windows PowerShell in cui la versione più recente disponibile di Microsoft .NET Framework è almeno 4.0. È anche possibile importarlo in qualsiasi sessione di PowerShell.
@{
DotNetFrameworkVersion = '4.0'
}
CLRVersion
Questa impostazione specifica la versione minima di Common Language Runtime (CLR) di Microsoft .NET Framework richiesta dal modulo.
Valore | |
---|---|
Tipo di input | System.String |
Obbligatorio | No |
Valore se non impostato | $null |
Accetta caratteri jolly | No |
Nota
Questa impostazione è valida solo per l'edizione di PowerShell Desktop, ad esempio Windows PowerShell 5.1 e si applica solo alle versioni di .NET Framework inferiori alla 4.5. Questo requisito non ha alcun effetto per le versioni più recenti di PowerShell o .NET Framework.
Il valore di questa impostazione deve essere convertibile in System.Version
quando si esegue Import-Module
.
Ad esempio, questo manifesto dichiara che il relativo modulo può essere importato in qualsiasi sessione di PowerShell o Windows PowerShell, indipendentemente dalla versione della versione CLR di Microsoft .NET Framework.
@{
# CLRVersion = ''
}
Con CLRVersion impostato su 4.0
, è possibile importare questo modulo in qualsiasi sessione di Windows PowerShell in cui la versione più recente disponibile di CLR è almeno 4.0. È anche possibile importarlo in qualsiasi sessione di PowerShell.
@{
CLRVersion = '4.0'
}
ProcessorArchitecture
Questa impostazione specifica l'architettura del processore richiesta dal modulo.
Valore | |
---|---|
Tipo di input | System.String |
Valori accettati | None , MSIL , X86 , IA64 , Amd64 Arm |
Obbligatorio | No |
Valore se non impostato | None |
Accetta caratteri jolly | No |
Il valore di questa impostazione deve essere convertibile in System.Reflection.ProcessorArchitecture
quando si esegue Import-Module
.
Ad esempio, questo manifesto dichiara che il relativo modulo può essere importato in qualsiasi sessione, indipendentemente dall'architettura del processore del sistema.
@{
# ProcessorArchitecture = ''
}
Con ProcessorArchitecture impostato su Amd64
, è possibile importare questo modulo solo in una sessione in esecuzione in un computer con un'architettura corrispondente.
@{
ProcessorArchitecture = 'Amd64'
}
RequiredModules
Questa impostazione specifica i moduli che devono trovarsi nello stato della sessione globale. Se i moduli necessari non sono nello stato della sessione globale, PowerShell li importa.
Se i moduli necessari non sono disponibili, il Import-Module
comando ha esito negativo.
Valore | |
---|---|
Tipo di input | System.String[] , System.Collections.Hashtable[] |
Obbligatorio | No |
Valore se non impostato | $null |
Accetta caratteri jolly | No |
Le voci per questa impostazione possono essere un nome di modulo, una specifica completa del modulo o un percorso di un file di modulo.
Quando il valore è un percorso, il percorso può essere completo o relativo.
Quando il valore è un nome o una specifica del modulo, PowerShell cerca il modulo specificato in PSModulePath .
Una specifica del modulo è una tabella hash con le chiavi seguenti.
ModuleName
- Obbligatorio. Specifica il nome del modulo.GUID
- Facoltativo. Specifica il GUID del modulo.- È anche obbligatorio specificare almeno una delle tre chiavi seguenti. La
RequiredVersion
chiave non può essere usata con iModuleVersion
tasti oMaximumVersion
. È possibile definire un intervallo di versioni accettabile per il modulo specificando insieme leModuleVersion
chiavi eMaximumVersion
.ModuleVersion
- Specifica una versione minima accettabile del modulo.RequiredVersion
- Specifica una versione esatta e obbligatoria del modulo.MaximumVersion
- Specifica la versione massima accettabile del modulo.
Nota
RequiredVersion
è stato aggiunto in Windows PowerShell 5.0.
MaximumVersion
è stato aggiunto in Windows PowerShell 5.1.
Ad esempio, questo manifesto dichiara che il relativo modulo non richiede altri moduli per la relativa funzionalità.
@{
# RequiredModules = @()
}
Questo manifesto dichiara che richiede il modulo PSReadLine. Quando si esegue Import-Module
in questo manifesto, PowerShell importa la versione più recente di PSReadLine disponibile per la sessione. Se non è disponibile alcuna versione, l'importazione restituisce un errore.
@{
RequiredModules = @(
'PSReadLine'
)
}
Suggerimento
In PowerShell 2.0 Import-Module
non importa automaticamente i moduli necessari. Verifica solo che i moduli necessari siano nello stato della sessione globale.
Questo manifesto dichiara che richiede una versione del modulo PSReadLine fornitore nella cartella del modulo. Quando si esegue Import-Module
in questo manifesto, PowerShell importa psreadline fornitore dal percorso specificato.
@{
RequiredModules = @(
'Vendored\PSReadLine\PSReadLine.psd1'
)
}
Questo manifesto dichiara che richiede in modo specifico la versione 2.0.0 del modulo PSReadLine. Quando si esegue Import-Module
in questo manifesto, PowerShell importa la versione 2.0.0 di PSReadLine, se disponibile. Se non è disponibile, Import-Module
restituisce un errore.
@{
RequiredModules = @(
@{
ModuleName = 'PSReadLine'
RequiredVersion = '2.0.0'
}
)
}
Questo manifesto dichiara che è necessario importare il modulo PSReadLine alla versione 2.0.0 o successiva.
@{
RequiredModules = @(
@{
ModuleName = 'PSReadLine'
ModuleVersion = '2.0.0'
}
)
}
Questo manifesto dichiara che richiede che il modulo PSReadLine venga importato alla versione 2.0.0 o successiva.
@{
RequiredModules = @(
@{
ModuleName = 'PSReadLine'
MaximumVersion = '2.0.0'
}
)
}
Questo manifesto dichiara che è necessario importare il modulo PSDesiredStateConfiguration in una versione uguale o successiva a 2.0.0, ma non superiore a 2.99.99.
@{
RequiredModules = @(
@{
ModuleName = 'PSDesiredStateConfiguration'
ModuleVersion = '2.0.0'
MaximumVersion = '2.99.99'
}
)
}
RequiredAssemblies
Questa impostazione specifica i file di assembly (.dll
) richiesti dal modulo.
PowerShell carica gli assembly specificati prima di aggiornare tipi o formati, importare moduli annidati o importare il file di modulo specificato nel valore della chiave RootModule .
Valore | |
---|---|
Tipo di input | System.String[] |
Obbligatorio | No |
Valore se non impostato | $null |
Accetta caratteri jolly | No |
Le voci per questa impostazione possono essere il nome file di un assembly o il percorso di uno. Elencare tutti gli assembly necessari, anche se sono elencati anche come moduli binari nell'impostazione NestedModules .
Questo manifesto richiede l'assembly example.dll
. Prima di caricare i file di formattazione o di tipo specificati in questo manifesto, PowerShell carica example.dll
dalla Assemblies
cartella che si trova nella stessa directory del manifesto del modulo.
@{
RequiredAssemblies = @(
'Assemblies\Example.dll'
)
}
ScriptsToProcess
Questa impostazione specifica i file di script (.ps1
) eseguiti nello stato della sessione del chiamante quando il modulo viene importato. È possibile usare questi script per preparare un ambiente o per usare uno script di accesso.
Valore | |
---|---|
Tipo di input | System.String[] |
Obbligatorio | No |
Valore se non impostato | $null |
Accetta caratteri jolly | No |
Per specificare gli script eseguiti nello stato della sessione del modulo, usare la chiave NestedModules .
Quando si importa questo manifesto, PowerShell esegue nella Initialize.ps1
sessione corrente.
@{
ScriptsToProcess = @(
'Scripts\Initialize.ps1'
)
}
Ad esempio, se Initialize.ps1
scrive messaggi informativi e imposta la $ExampleState
variabile:
if ([string]::IsNullOrEmpty($ExampleState)) {
Write-Information "Example not initialized."
Write-Information "Initializing now..."
$ExampleState = 'Initialized'
} else {
Write-Information "Example already initialized."
}
Quando si importa il modulo, lo script viene eseguito, scrivendo tali messaggi e impostando $ExampleState
nella sessione.
$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
Questa impostazione specifica i file di tipo (.ps1xml
) eseguiti quando il modulo viene importato.
Valore | |
---|---|
Tipo di input | System.String[] |
Obbligatorio | No |
Valore se non impostato | $null |
Accetta caratteri jolly | No |
Quando si importa il modulo, PowerShell esegue il Update-TypeData
cmdlet con i file specificati. Poiché i file di tipo non hanno ambito, influiscono su tutti gli stati della sessione.
Per altre informazioni sui file di tipo, vedere about_Types.ps1xml
Ad esempio, quando si importa questo manifesto, PowerShell carica i tipi specificati nel Example.ps1xml
file dalla Types
cartella che si trova nella stessa directory del manifesto del modulo.
@{
TypesToProcess = @(
'Types\Example.ps1xml'
)
}
FormatsToProcess
Questa impostazione specifica i file di formattazione (.ps1xml
) eseguiti quando il modulo viene importato.
Valore | |
---|---|
Tipo di input | System.String[] |
Obbligatorio | No |
Valore se non impostato | $null |
Accetta caratteri jolly | No |
Quando si importa un modulo, PowerShell esegue il Update-FormatData
cmdlet con i file specificati. Poiché la formattazione dei file non ha ambito, influiscono su tutti gli stati della sessione nella sessione.
Per altre informazioni sui file di tipo, vedere about_Format.ps1xml
Ad esempio, quando si importa questo modulo, PowerShell carica i formati specificati nel Example.ps1xml
file dalla Formats
cartella che si trova nella stessa directory del manifesto del modulo.
@{
FormatsToProcess = @(
'Formats\Example.ps1xml'
)
}
NestedModules
Questa impostazione specifica i moduli di script () e i moduli binari (.psm1
.dll
) importati nello stato della sessione del modulo. È anche possibile specificare i file di script (.ps1
). I file in questa impostazione vengono eseguiti nell'ordine in cui sono elencati.
Valore | |
---|---|
Tipo di input | System.String[] , System.Collections.Hashtable[] |
Obbligatorio | No |
Valore se non impostato | $null |
Accetta caratteri jolly | No |
Le voci per questa impostazione possono essere un nome di modulo, una specifica completa del modulo o un percorso di un modulo o di un file di script.
Quando il valore è un percorso, il percorso può essere completo o relativo.
Quando il valore è un nome o una specifica del modulo, PowerShell cerca il modulo specificato in PSModulePath .
Una specifica del modulo è una tabella hash con le chiavi seguenti.
ModuleName
- Obbligatorio. Specifica il nome del modulo.GUID
- Facoltativo. Specifica il GUID del modulo.- È anche obbligatorio specificare almeno una delle tre chiavi seguenti. La
RequiredVersion
chiave non può essere usata con iModuleVersion
tasti oMaximumVersion
. È possibile definire un intervallo di versioni accettabile per il modulo specificando insieme leModuleVersion
chiavi eMaximumVersion
.ModuleVersion
- Specifica una versione minima accettabile del modulo.RequiredVersion
- Specifica una versione esatta e obbligatoria del modulo.MaximumVersion
- Specifica la versione massima accettabile del modulo.
Nota
RequiredVersion
è stato aggiunto in Windows PowerShell 5.0.
MaximumVersion
è stato aggiunto in Windows PowerShell 5.1.
Tutti gli elementi che devono essere esportati da un modulo annidato devono essere esportati dal modulo annidato usando il Export-ModuleMember
cmdlet o essere elencati in una delle proprietà di esportazione:
- FunctionsToExport
- CmdletsToExport
- VariablesToExport
- AliasesToExport
I moduli annidati nello stato della sessione del modulo sono disponibili per il modulo radice, ma non vengono restituiti da un Get-Module
comando nello stato della sessione del chiamante.
Gli script (.ps1
) elencati in questa impostazione vengono eseguiti nello stato della sessione del modulo, non nello stato della sessione del chiamante. Per eseguire uno script nello stato della sessione del chiamante, elencare il nome file dello script nell'impostazione ScriptsToProcess .
Ad esempio, quando si importa questo manifesto, il Helpers.psm1
modulo viene caricato nello stato della sessione del modulo radice. Tutti i cmdlet dichiarati nel modulo annidato vengono esportati se non diversamente limitato.
@{
NestedModules = @(
'Helpers\Helpers.psm1'
)
}
FunctionsToExport
Questa impostazione specifica le funzioni esportate dal modulo. È possibile usare questa impostazione per limitare le funzioni esportate dal modulo. Può rimuovere funzioni dall'elenco di funzioni esportate, ma non può aggiungere funzioni all'elenco.
Valore | |
---|---|
Tipo di input | System.String[] |
Obbligatorio | No |
Valore se non impostato | $null |
Accetta caratteri jolly | Sì |
È possibile specificare le voci in questa impostazione con caratteri jolly. Tutte le funzioni corrispondenti nell'elenco delle funzioni esportate vengono esportate.
Suggerimento
Per ottenere prestazioni e individuabilità, è consigliabile elencare sempre in modo esplicito le funzioni da esportare nel modulo in questa impostazione senza usare caratteri jolly.
Ad esempio, quando si importa un modulo con l'impostazione impostata come commento, tutte le funzioni nel modulo radice e tutti i moduli annidati vengono esportati.
@{
# FunctionsToExport = @()
}
Questo manifesto è funzionalmente identico a non specificare affatto l'impostazione.
@{
FunctionsToExport = '*'
}
Con FunctionsToExport impostato come matrice vuota, quando si importa questo modulo non sono disponibili funzioni il modulo radice o qualsiasi esportazione di moduli annidati.
@{
FunctionsToExport = @()
}
Nota
Se si crea il manifesto del modulo con il New-ModuleManifest
comando e non si specifica il parametro FunctionsToExport , il manifesto creato ha questa impostazione specificata come matrice vuota. A meno che non si modifichi il manifesto, non vengono esportate funzioni dal modulo.
Con FunctionsToExport impostato su include solo la Get-Example
funzione, quando si importa questo modulo viene resa disponibile solo la Get-Example
funzione, anche se altre funzioni sono state esportate dal modulo radice o da qualsiasi modulo annidato.
@{
FunctionsToExport = @(
'Get-Example'
)
}
Con FunctionsToExport impostato con una stringa con caratteri jolly, quando si importa questo modulo qualsiasi funzione il cui nome termina con Example
viene reso disponibile, anche se altre funzioni sono state esportate come membri del modulo radice o di qualsiasi modulo annidato.
@{
FunctionsToExport = @(
'*Example'
)
}
CmdletsToExport
Questa impostazione specifica i cmdlet che il modulo esporta. È possibile usare questa impostazione per limitare i cmdlet esportati dal modulo. Può rimuovere i cmdlet dall'elenco dei membri del modulo esportati, ma non può aggiungere cmdlet all'elenco.
Valore | |
---|---|
Tipo di input | System.String[] |
Obbligatorio | No |
Valore se non impostato | $null |
Accetta caratteri jolly | Sì |
È possibile specificare le voci in questa impostazione con caratteri jolly. Tutti i cmdlet corrispondenti nell'elenco dei cmdlet esportati vengono esportati.
Suggerimento
Per ottenere prestazioni e individuabilità, è consigliabile elencare sempre in modo esplicito i cmdlet da esportare nel modulo in questa impostazione senza usare caratteri jolly.
Ad esempio, quando si importa un modulo con questa impostazione come commento, tutti i cmdlet nel modulo radice e tutti i moduli annidati vengono esportati.
@{
# CmdletsToExport = @()
}
Questo manifesto è funzionalmente identico a non specificare affatto l'impostazione.
@{
CmdletsToExport = '*'
}
Con CmdletsToExport impostato come matrice vuota, quando si importa questo modulo non sono disponibili cmdlet per il modulo radice o eventuali esportazioni di moduli annidati.
@{
CmdletsToExport = @()
}
Nota
Se si crea il manifesto del modulo con il New-ModuleManifest
comando e non si specifica il parametro CmdletsToExport , il manifesto creato ha questa impostazione specificata come matrice vuota. A meno che non si modifichi il manifesto, non viene esportato alcun cmdlet dal modulo.
Con CmdletsToExport impostato su include solo il Get-Example
cmdlet , quando si importa questo modulo viene reso disponibile solo il Get-Example
cmdlet, anche se altri cmdlet sono stati esportati dal modulo radice o da eventuali moduli annidati.
@{
CmdletsToExport = @(
'Get-Example'
)
}
Con CmdletsToExport impostato con una stringa con caratteri jolly, quando si importa questo modulo qualsiasi cmdlet il cui nome termina con Example
viene reso disponibile, anche se altri cmdlet sono stati esportati come membri del modulo radice o di eventuali moduli annidati.
@{
CmdletsToExport = @(
'*Example'
)
}
VariablesToExport
Questa impostazione specifica le variabili esportate dal modulo. È possibile usare questa impostazione per limitare le variabili esportate dal modulo. Può rimuovere le variabili dall'elenco dei membri del modulo esportato, ma non può aggiungere variabili all'elenco.
Valore | |
---|---|
Tipo di input | System.String[] |
Obbligatorio | No |
Valore se non impostato | $null |
Accetta caratteri jolly | Sì |
È possibile specificare le voci in questa impostazione con caratteri jolly. Tutte le variabili corrispondenti nell'elenco dei membri del modulo esportato vengono esportate.
Suggerimento
Per ottenere prestazioni e individuabilità, è consigliabile elencare sempre in modo esplicito le variabili da esportare nel modulo in questa impostazione senza usare caratteri jolly.
Ad esempio, quando si importa un modulo con questa impostazione come commento, tutte le variabili nel modulo radice e tutti i moduli annidati vengono esportati.
@{
# VariablesToExport = @()
}
Questo manifesto è funzionalmente identico a non specificare affatto l'impostazione.
@{
VariablesToExport = '*'
}
Nota
Se si crea il manifesto del modulo con il New-ModuleManifest
comando e non si specifica il parametro VariablesToExport , il manifesto creato ha questa impostazione specificata come '*'
. A meno che non si modifichi il manifesto, tutte le variabili del modulo vengono esportate.
Con VariablesToExport impostato come matrice vuota, quando si importa questo modulo non sono disponibili variabili nel modulo radice o in eventuali moduli annidati.
@{
VariablesToExport = @()
}
Con VariablesToExport impostato su include solo la SomeExample
variabile, quando si importa questo modulo viene resa disponibile solo la $SomeExample
variabile, anche se altre variabili sono state esportate dal modulo radice o da eventuali moduli annidati.
@{
VariablesToExport = @(
'SomeExample'
)
}
Con VariablesToExport impostato con una stringa con caratteri jolly, quando si importa questo modulo qualsiasi variabile il cui nome termina con Example
viene reso disponibile, anche se altre variabili sono state esportate come membri del modulo radice o di qualsiasi modulo annidato.
@{
VariablesToExport = @(
'*Example'
)
}
DscResourcesToExport
Questa impostazione specifica le risorse DSC esportate dal modulo. È possibile usare questa impostazione per limitare le risorse DSC basate sulla classe esportate dal modulo. Può rimuovere risorse DSC dall'elenco dei membri del modulo esportati, ma non può aggiungere risorse DSC all'elenco.
Valore | |
---|---|
Tipo di input | System.String[] |
Obbligatorio | No |
Valore se non impostato | $null |
Accetta caratteri jolly | Sì |
È possibile specificare le voci in questa impostazione con caratteri jolly. Tutte le risorse DSC corrispondenti basate sulla classe nel modulo vengono esportate.
Suggerimento
Per l'individuabilità, è consigliabile elencare sempre in modo esplicito tutte le esportazioni di risorse DSC esportate dal modulo.
Per altre informazioni sulla creazione e sull'uso delle risorse DSC, vedere la documentazione per DSC.
Questo manifesto esporta tutte le risorse DSC basate su classe e MOF definite nel modulo radice ed eventuali moduli annidati.
@{
# DscResourcesToExport = @()
}
Questo manifesto esporta tutte le risorse DSC basate su MOF definite nel modulo radice ed eventuali moduli annidati, ma solo una risorsa DSC basata su classe, ExampleClassResource
.
@{
DscResourcesToExport = @(
'ExampleClassResource'
)
}
Questo manifesto esporta tutte le risorse DSC incluse. Anche se la risorsa basata su MOF non è stata elencata, il modulo lo esporterebbe comunque.
@{
DscResourcesToExport = @(
'ExampleClassResource'
'ExampleMofResourceFirst'
)
}
ModuleList
Questa impostazione è un elenco di inventario informativo dei moduli inclusi in questa impostazione. Questo elenco non influisce sul comportamento del modulo.
Valore | |
---|---|
Tipo di input | System.String[] , System.Collections.Hashtable[] |
Obbligatorio | No |
Valore se non impostato | $null |
Accetta caratteri jolly | No |
Le voci per questa impostazione possono essere un nome di modulo, una specifica completa del modulo o un percorso di un modulo o di un file di script.
Quando il valore è un percorso, il percorso può essere completo o relativo.
Quando il valore è un nome o una specifica del modulo, PowerShell cerca il modulo specificato in PSModulePath .
Una specifica del modulo è una tabella hash con le chiavi seguenti.
ModuleName
- Obbligatorio. Specifica il nome del modulo.GUID
- Facoltativo. Specifica il GUID del modulo.- È anche obbligatorio specificare almeno una delle tre chiavi seguenti. La
RequiredVersion
chiave non può essere usata con iModuleVersion
tasti oMaximumVersion
. È possibile definire un intervallo di versioni accettabile per il modulo specificando insieme leModuleVersion
chiavi eMaximumVersion
.ModuleVersion
- Specifica una versione minima accettabile del modulo.RequiredVersion
- Specifica una versione esatta e obbligatoria del modulo.MaximumVersion
- Specifica la versione massima accettabile del modulo.
Nota
RequiredVersion
è stato aggiunto in Windows PowerShell 5.0.
MaximumVersion
è stato aggiunto in Windows PowerShell 5.1.
Questo manifesto non fornisce un elenco informativo dei moduli inclusi. Può avere o meno moduli. Anche se questa impostazione non è specificata, tutti i moduli elencati nelle impostazioni RootModule, ScriptsToProcess o NestedModules continuano a comportarsi normalmente.
@{
# ModuleList = @()
}
Questo manifesto dichiara che gli unici moduli inclusi sono Example.psm1
e i First.psm1
moduli secondari e Second.psm1
nella Submodules
cartella .
@{
ModuleList = @(
'Example.psm1'
'Submodules\First.psm1'
'Submodules\Second.psm1'
)
}
FileList
Questa impostazione è un elenco di inventario informativo dei file inclusi in questo modulo. Questo elenco non influisce sul comportamento del modulo.
Valore | |
---|---|
Tipo di input | System.String[] |
Obbligatorio | No |
Valore se non impostato | $null |
Accetta caratteri jolly | Sì |
Le voci per questa impostazione devono essere il percorso relativo di un file dalla cartella contenente il manifesto del modulo.
Quando un utente chiama Get-Module
un manifesto con questa impostazione definita, la proprietà FileList contiene il percorso completo di questi file, unendo il percorso del modulo con il percorso relativo di ogni voce.
Questo manifesto non include un elenco dei relativi file.
@{
# FileList = @()
}
Questo manifesto dichiara che gli unici file inclusi sono elencati in questa impostazione.
@{
FileList = @(
'Example.psd1'
'Example.psm1'
'Assemblies\Example.dll'
'Scripts\Initialize.ps1'
'Submodules\First.psm1'
'Submodules\Second.psm1'
)
}
PrivateData
Questa impostazione definisce una tabella hash di dati disponibile per qualsiasi comando o funzione nell'ambito del modulo radice.
Valore | |
---|---|
Tipo di input | System.Collections.Hashtable |
Obbligatorio | PowerShell Gallery, Crescendo |
Valore se non impostato | $null |
Accetta caratteri jolly | No |
Quando si esporta un manifesto Crescendo per creare un nuovo modulo, Export-CrescendoModule
aggiunge due chiavi a PrivateData
- CrescendoGenerated - timestamp durante l'esportazione del modulo
- CrescendoVersion : versione di Crescendo usata per esportare il modulo
È possibile aggiungere chiavi personalizzate per contenere i metadati da tenere traccia. Tutte le chiavi aggiunte a questa impostazione sono disponibili per le funzioni e i cmdlet nel modulo radice usando $MyInvocation.MyCommand.Module.PrivateData
. La tabella hash non è disponibile nell'ambito del modulo stesso, solo nei cmdlet definiti nel modulo.
Ad esempio, questo manifesto definisce la chiave PublishedDate in PrivateData.
@{
PrivateData = @{
PublishedDate = '2022-06-01'
}
}
I cmdlet nel modulo possono accedere a questo valore con la $MyInvocation
variabile .
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"
}
}
Dopo l'importazione del modulo, la funzione usa il valore di PrivateData per determinare quando il modulo è stato pubblicato.
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 proprietà figlio PSData definisce una tabella hash di valori che supportano scenari di estensione specifici.
Valore | |
---|---|
Tipo di input | System.Collections.Hashtable |
Obbligatorio | PowerShell Gallery, funzionalità sperimentali, moduli Crescendo |
Valore se non impostato | $null |
Accetta caratteri jolly | No |
La proprietà figlio PSData viene utilizzata per gli scenari seguenti:
- PowerShell Gallery: quando si crea un manifesto del modulo usando
New-ModuleManifest
il cmdlet prepopola la tabella hash PSData con le chiavi segnaposto necessarie durante la pubblicazione del modulo in PowerShell Gallery. Per altre informazioni sui manifesti del modulo e sulla pubblicazione in PowerShell Gallery, vedere Valori del manifesto del pacchetto che influisce sull'interfaccia utente di PowerShell Gallery. - Funzionalità sperimentali: i metadati relativi a una funzionalità sperimentale vengono mantenuti nella proprietà ExperimentalFeatures di PSData. La proprietà ExperimentalFeatures è una matrice di tabelle hash contenenti il nome e la descrizione della funzionalità. Per altre informazioni, vedere Dichiarazione delle funzionalità sperimentali nei moduli.
- Moduli Crescendo: quando si esporta un manifesto Crescendo per creare un nuovo modulo,
Export-CrescendoModule
aggiunge il valoreCrescendoBuilt
alla proprietà PSData.Tags . È possibile usare questo tag per trovare i moduli in PowerShell Gallery creati con Crescendo. Per altre informazioni, vedere Export-CrescendoModule.
HelpInfoURI
Questa impostazione specifica l'indirizzo Internet del file XML HelpInfo per il modulo.
Valore | |
---|---|
Tipo di input | System.String |
Obbligatorio | No |
Valore se non impostato | $null |
Accetta caratteri jolly | No |
Il valore di questa impostazione deve essere un URI (Uniform Resource Identifier) che inizia con http o https.
Il file XML HelpInfo supporta la funzionalità Guida aggiornabile introdotta in PowerShell 3.0. Il file contiene informazioni sul percorso dei file della Guida scaricabile per il modulo e i numeri di versione dei file della Guida più recenti per ogni set di impostazioni locali supportato.
Per informazioni sulla Guida aggiornabile, vedere about_Updatable_Help. Per informazioni sul file XML HelpInfo, vedere Supporto della Guida aggiornabile.
Ad esempio, questo modulo supporta la Guida aggiornabile.
@{
HelpInfoUri = 'http://https://go.microsoft.com/fwlink/?LinkID=603'
}
DefaultCommandPrefix
Questa impostazione specifica un prefisso anteporto ai sostantivi di tutti i comandi del modulo quando vengono importati in una sessione. I prefissi consentono di evitare conflitti di nomi di comando nella sessione di un utente.
Valore | |
---|---|
Tipo di input | System.String |
Obbligatorio | No |
Valore se non impostato | $null |
Accetta caratteri jolly | No |
Gli utenti del modulo possono eseguire l'override di questo prefisso specificando il parametro Prefix del Import-Module
cmdlet.
Questa impostazione è stata introdotta in PowerShell 3.0.
Quando questo manifesto viene importato, tutti i cmdlet importati da questo modulo hanno Example
anteporto al sostantivo nel nome. Ad esempio, Get-Item
viene importato come Get-ExampleItem
.
@{
DefaultCommandPrefix = 'Example'
}