Korábban láthattuk a get-module futtatása során, hogy egy modulnak lehetne verziója, leírása és sok egyéb metaadata, de vajon hogyan lehet ezeket megadni? Erre egy újabb fájltípus, a moduljegyzék , vagy eredeti nevén module manifest szolgál. Ez egy szövegfájl, amiben egy hashtábla formátumban vannak megadva a modulhoz tartozó leíró adatok. Hogyan lehet ilyen fájlt létrehozni? Erre a New-ModuleManifest cmdletet használhatjuk:
[16] PS C:\> New-ModuleManifest -Path $pshome\modules\popup\popup.psd1 -Autho
r "Soós Tibor" -ModuleToProcess popup -ModuleVersion 1.0.0.0 -Description "Gr
afikus Popup ablak"
cmdlet New-ModuleManifest at command pipeline position 1
Supply values for the following parameters:
NestedModules[0]:
CompanyName:
Copyright:
TypesToProcess[0]:
FormatsToProcess[0]:
RequiredAssemblies[0]:
FileList[0]:
[17] PS C:\>
[18] PS C:\> Remove-Module popup
[19] PS C:\> Import-Module popup
[20] PS C:\> Get-Module popup | fl
Name : popup
Path : C:\Windows\system32\WindowsPowerShell\v1.0\Modules\popup
\popup.psm1
Description : Grafikus Popup ablak
ModuleType : Script
Version : 1.0.0.0
NestedModules : {}
ExportedFunctions : Read-Popup
ExportedCmdlets : {}
ExportedVariables : ReturnButtons
ExportedAliases : popup
A moduljegyzék létrehozása során én csak a legfontosabb adatokat adtam meg a [16]-os sorban, de a PowerShell szíve szerint minden további adatokat is bekérne, amelyekre rá is kérdez, de nem szükséges ezekre megadni a választ. Ezután eltávolítottam a modul korábban jegyzék nélkül importált változatát [18], majd az újat beimportáltam [19], majd látható, hogy az így lekérdezett modulinformációk [20] már tartalmazzák a jegyzékben meghatározott adatokat is.
Nézzük meg magát a jegyzékfájlt:
[23] PS C:\> Get-Content $pshome\modules\popup\popup.psd1
#
# Module manifest for module 'popup'
#
# Generated by: Soós Tibor
#
# Generated on: 2009. 12. 06.
#
@{
# Script module or binary module file associated with this manifest
ModuleToProcess = 'popup'
# Version number of this module.
ModuleVersion = '1.0.0.0'
# ID used to uniquely identify this module
GUID = '200a1d9f-ae8f-4bca-8e70-cd44b23dc294'
# Author of this module
Author = 'Soós Tibor'
# Company or vendor of this module
CompanyName = 'Unknown'
# Copyright statement for this module
Copyright = '(c) 2009 Soós Tibor. All rights reserved.'
# Description of the functionality provided by this module
Description = 'Grafikus Popup ablak'
# Minimum version of the Windows PowerShell engine required by this module
PowerShellVersion = ''
# Name of the Windows PowerShell host required by this module
PowerShellHostName = ''
# Minimum version of the Windows PowerShell host required by this module
PowerShellHostVersion = ''
# Minimum version of the .NET Framework required by this module
DotNetFrameworkVersion = ''
# Minimum version of the common language runtime (CLR) required by this modu
le
CLRVersion = ''
# Processor architecture (None, X86, Amd64, IA64) required by this module
ProcessorArchitecture = ''
# Modules that must be imported into the global environment prior to importi
ng this module
RequiredModules = @()
# Assemblies that must be loaded prior to importing this module
RequiredAssemblies = @()
# Script files (.ps1) that are run in the caller's environment prior to impo
rting this module
ScriptsToProcess = @()
# Type files (.ps1xml) to be loaded when importing this module
TypesToProcess = @()
# Format files (.ps1xml) to be loaded when importing this module
FormatsToProcess = @()
# Modules to import as nested modules of the module specified in ModuleToPro
cess
NestedModules = @()
# Functions to export from this module
FunctionsToExport = '*'
# Cmdlets to export from this module
CmdletsToExport = '*'
# Variables to export from this module
VariablesToExport = '*'
# Aliases to export from this module
AliasesToExport = '*'
# List of all modules packaged with this module
ModuleList = @()
# List of all files packaged with this module
FileList = @()
# Private data to pass to the module specified in ModuleToProcess
PrivateData = ''
}
Ebben látható, hogy milyen adatok kitöltése lehetséges, ráadásul minden adatmező kis magyarázattal is el van látva.
Megjegyzés
Annak ellenére, hogy az Import-Module cmdletnek van -version paramétere, és a jegyzékfájlban lehet verziót definiálni sajnos a különböző modulverziók párhuzamos tárolása és kezelése nem megoldott. A mappanevek kötöttsége miatt egy modulmappában nem lehet egyidejűleg két verziója a modulunknak.