about_Module_Manifests

Deskripsi singkat

Menjelaskan pengaturan dan praktik untuk menulis file manifes modul.

Deskripsi panjang

Manifes modul adalah file data PowerShell (.psd1) yang berisi tabel hash. Pasangan kunci-nilai dalam tabel hash menjelaskan konten dan atribut modul, menentukan prasyarat, dan mengontrol bagaimana komponen diproses.

Manifes tidak diperlukan untuk memuat modul tetapi diperlukan untuk menerbitkan modul ke Galeri PowerShell. Manifes juga memungkinkan Anda untuk memisahkan implementasi modul Anda dari cara memuatnya. Dengan manifes, Anda dapat menentukan persyaratan, kompatibilitas, urutan pemuatan, dan banyak lagi.

Saat Anda menggunakan New-ModuleManifest tanpa menentukan parameter apa pun untuk pengaturan manifes, ia menulis file manifes minimal. Cuplikan di bawah ini menunjukkan kepada Anda output default ini, dipotong komentar dan penspasian untuk brevity:

@{
# 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 = ''
}

Anda dapat menggunakan Test-ModuleManifest untuk memvalidasi manifes modul sebelum menerbitkan modul. Test-ModuleManifest mengembalikan kesalahan jika manifes tidak valid atau modul tidak dapat diimpor ke sesi saat ini karena sesi tidak memenuhi persyaratan yang ditetapkan dalam manifes.

Menggunakan kode skrip dalam manifes modul

Nilai yang ditetapkan pengaturan dalam file manifes dapat berupa ekspresi yang dievaluasi oleh PowerShell. Ini memungkinkan Anda untuk membangun jalur dan menetapkan nilai secara kondisional berdasarkan variabel.

Saat Anda mengimpor modul menggunakan Import-Module, manifes dievaluasi dalam Restricted mode bahasa. Restricted mode membatasi perintah dan variabel yang dapat digunakan.

Perintah yang diizinkan

  • Import-LocalizedData
  • ConvertFrom-StringData
  • Write-Host
  • Out-Host
  • Join-Path

Variabel yang diizinkan

  • $PSScriptRoot
  • $PSEdition
  • $EnabledExperimentalFeatures
  • Variabel lingkungan apa pun, seperti $ENV:TEMP

Untuk informasi selengkapnya, lihat about_Language_Modes.

Pengaturan manifes

Bagian berikut merinci setiap pengaturan yang tersedia dalam manifes modul dan bagaimana Anda dapat menggunakannya. Mereka dimulai dengan sinopsis pengaturan dan diikuti oleh matriks yang mencantumkan:

  • Jenis input: Jenis objek yang dapat Anda tentukan untuk pengaturan ini dalam manifes.
  • Diperlukan: Jika nilai ini adalah Yes, pengaturan diperlukan untuk mengimpor modul dan menerbitkannya ke Galeri PowerShell. Jika itu No, itu tidak diperlukan untuk keduanya. Jika , PowerShell Galleryhanya diperlukan untuk menerbitkan ke Galeri PowerShell.
  • Nilai jika tidak diatur: Nilai yang dimiliki pengaturan ini saat diimpor dan tidak diatur secara eksplisit.
  • Menerima kartubebas: Apakah pengaturan ini dapat mengambil nilai kartubebas atau tidak.

RootModule

Pengaturan ini menentukan file utama atau akar modul. Saat modul diimpor, anggota yang diekspor oleh file modul akar diimpor ke status sesi pemanggil.

Nilai
Jenis Input System.String
Diperlukan No
Nilai jika tidak disetel $null
Menerima kartubebas No

Nilai harus berupa jalur ke salah satu dari yang berikut ini:

  • skrip (.ps1)
  • modul skrip (.psm1)
  • manifes modul (.psd1)
  • assembly (.dll)
  • file XML definisi cmdlet (.cdxml)
  • Alur Kerja Windows PowerShell 5.1 (.xaml)

Jalur harus relatif terhadap manifes modul.

Jika manifes modul tidak memiliki file akar yang ditunjuk dalam kunci RootModule , manifes menjadi file utama untuk modul, dan modul menjadi modul manifes (ModuleType = Manifest). Ketika RootModule ditentukan, jenis modul ditentukan dari ekstensi file yang digunakan:

  • file .ps1 atau .psm1 membuat Skrip jenis modul
  • .psd1 file membuat manifes jenis modul
  • .dll file membuat jenis modul Biner
  • .cdxml file membuat jenis modul CIM
  • file .xaml membuat jenis modul Alur Kerja

Secara default, semua anggota modul di RootModule diekspor.

Tip

Kecepatan pemuatan modul berbeda antara jenis modul Biner, Script, dan CIM . Untuk informasi selengkapnya, lihat Pertimbangan penulisan modul PowerShell

Misalnya, ModuleType modul ini adalah Manifes. Satu-satunya anggota modul yang dapat diekspor modul ini adalah yang ditentukan dalam modul yang ditentukan dengan pengaturan NestedModules .

@{
    RootModule = ''
}

Catatan

Pengaturan ini juga dapat ditentukan dalam manifes modul sebagai ModuleToProcess. Meskipun nama untuk pengaturan ini valid, praktik terbaik adalah menggunakan RootModule sebagai gantinya.

ModuleVersion

Pengaturan ini menentukan versi modul. Ketika beberapa versi modul ada pada sistem, versi terbaru dimuat secara default saat Anda menjalankan Import-Module.

Nilai
Jenis Input System.String
Diperlukan Ya
Nilai jika tidak disetel Tidak
Menerima kartubebas No

Nilai pengaturan ini harus dapat dikonversi ke System.Version saat Anda menjalankan Import-Module.

Misalnya, manifes ini mendeklarasikan versi modul sebagai '1.2.3'.

@{
    ModuleVersion = '1.2.3'
}

Saat Anda mengimpor modul dan memeriksa properti Versi , perhatikan bahwa itu adalah objek System.Version dan bukan string:

$ExampleModule = Import-Module example.psd1
$ExampleModule.Version
$ExampleModule.Version.GetType().Name
Major  Minor  Build  Revision
-----  -----  -----  --------
1      2      3      -1

Version

CompatiblePSEditions

Pengaturan ini menentukan PSEdisi yang kompatibel dengan modul.

Nilai
Jenis Input System.String[]
Nilai yang Diterima Desktop, Core
Diperlukan No
Nilai jika tidak disetel $null
Menerima kartubebas No

Jika nilai pengaturan ini adalah $null, modul dapat diimpor terlepas dari PSEdisi sesi. Anda dapat mengaturnya ke satu atau beberapa nilai yang diterima.

Untuk informasi tentang PSEdition, lihat:

Ketika pengaturan ini ditentukan, modul hanya dapat diimpor ke dalam sesi di mana $PSEdition nilai variabel otomatis disertakan dalam pengaturan.

Catatan

$PSEdition Karena variabel otomatis diperkenalkan dalam versi 5.1, versi Windows PowerShell yang lebih lama tidak dapat memuat modul yang menggunakan pengaturan CompatiblePSEditions.

Misalnya, Anda dapat mengimpor manifes modul ini dalam sesi apa pun:

@{
    # CompatiblePSEditions = @()
}

Dengan pengaturan yang ditentukan, modul ini hanya dapat diimpor dalam sesi di mana $PSEdition nilai variabel otomatis adalah Core.

@{
    CompatiblePSEditions = @('Core')
}

GUID

Pengaturan ini menentukan pengidentifikasi unik untuk modul. GUID digunakan untuk membedakan antara modul dengan nama yang sama.

Nilai
Jenis Input System.String
Diperlukan No
Nilai jika tidak disetel 00000000-0000-0000-0000-000000000000
Menerima kartubebas No

Nilai pengaturan ini harus dapat dikonversi ke System.Guid saat Anda menjalankan Import-Module.

Perhatian

Meskipun bukan pengaturan yang diperlukan, tidak menentukan GUID dalam manifes tidak memiliki manfaat dan dapat menyebabkan tabrakan nama untuk modul.

Anda dapat membuat guid baru untuk digunakan dalam manifes Anda:

New-Guid | Select-Object -ExpandProperty Guid
8456b025-2fa5-4034-ae47-e6305f3917ca
@{
    GUID = '8456b025-2fa5-4034-ae47-e6305f3917ca'
}

Jika ada modul lain pada komputer dengan nama yang sama, Anda masih dapat mengimpor modul yang Anda inginkan dengan menentukan nama modul yang sepenuhnya memenuhi syarat:

Import-Module -FullyQualifiedName @{
    ModuleName    = 'Example'
    GUID          = '8456b025-2fa5-4034-ae47-e6305f3917ca'
    ModuleVersion = '1.0.0'
}

Penulis

Pengaturan ini mengidentifikasi penulis modul.

Nilai
Jenis Input System.String
Diperlukan Galeri PowerShell
Nilai jika tidak disetel $null
Menerima kartubebas No

Manifes ini menyatakan bahwa penulis modul adalah Tim Pengalaman Pengembang Contoso.

@{
    Author = 'Contoso Developer Experience Team'
}

NamaPerusahaan

Pengaturan ini mengidentifikasi perusahaan atau vendor yang membuat modul.

Nilai
Jenis Input System.String
Diperlukan No
Nilai jika tidak disetel $null
Menerima kartubebas No

Manifes ini menyatakan bahwa modul dibuat oleh Contoso, Ltd.

@{
    CompanyName = 'Contoso, Ltd.'
}

Pengaturan ini menentukan pernyataan hak cipta untuk modul.

Nilai
Jenis Input System.String
Diperlukan No
Nilai jika tidak disetel $null
Menerima kartubebas No

Manifes ini menyatakan pernyataan hak cipta yang mencairkan semua hak untuk Contoso, Ltd. per 2022.

@{
    Copyright = '(c) 2022 Contoso, Ltd. All rights reserved.'
}

Deskripsi

Pengaturan ini menjelaskan modul pada tingkat tinggi.

Nilai
Jenis Input System.String
Diperlukan Galeri PowerShell
Nilai jika tidak disetel $null
Menerima kartubebas No

Manifes ini mencakup deskripsi singkat. Anda juga dapat menggunakan string di sini untuk menulis deskripsi yang lebih panjang atau multibaris.

@{
    Description = 'Example commands to show a valid module manifest'
}

PowerShellVersion

Pengaturan ini menentukan versi minimum PowerShell yang diperlukan modul ini.

Nilai
Jenis Input System.String
Diperlukan No
Nilai jika tidak disetel $null
Menerima kartubebas No

Nilai pengaturan ini harus dapat dikonversi ke System.Version saat Anda menjalankan Import-Module.

Jika pengaturan ini tidak diatur, PowerShell tidak membatasi impor modul berdasarkan versi saat ini.

Misalnya, manifes ini menyatakan bahwa modul kompatibel dengan setiap versi PowerShell dan Windows PowerShell.

@{
    # PowerShellVersion = ''
}

Dengan PowerShellVersion diatur ke 7.2, Anda hanya dapat mengimpor modul di PowerShell 7.2 atau yang lebih tinggi.

@{
    PowerShellVersion = '7.2'
}

PowerShellHostName

Pengaturan ini menentukan nama program host PowerShell yang diperlukan modul, seperti Windows PowerShell ISE Host atau ConsoleHost.

Nilai
Jenis Input System.String
Diperlukan No
Nilai jika tidak disetel $null
Menerima kartubebas No

Anda dapat menemukan nama host untuk sesi dengan $Host.Name pernyataan . Misalnya, Anda dapat melihat bahwa host untuk sesi jarak jauh adalah ServerRemoteHost alih-alih ConsoleHost:

$Host.Name
Enter-PSSession -ComputerName localhost
$Host.Name
ConsoleHost
[localhost]: PS C:\Users\username\Documents> $Host.Name
ServerRemoteHost

Modul ini dapat diimpor ke host apa pun.

@{
    # PowerShellHostName = ''
}

Dengan PowerShellHostName diatur ke ServerRemoteHost, Anda hanya dapat mengimpor modul dalam sesi PowerShell jarak jauh.

@{
    PowerShellHostName = 'ServerRemoteHost'
}

PowerShellHostVersion

Pengaturan ini menentukan versi minimum program host PowerShell yang diperlukan modul.

Nilai
Jenis Input System.String
Diperlukan No
Nilai jika tidak disetel $null
Menerima kartubebas No

Nilai pengaturan ini harus dapat dikonversi ke System.Version saat Anda menjalankan Import-Module.

Perhatian

Meskipun pengaturan ini dapat digunakan tanpa pengaturan PowerShellHostName , pengaturan ini meningkatkan peluang perilaku tak terduga. Hanya gunakan pengaturan ini saat Anda juga menggunakan pengaturan PowerShellHostName .

Misalnya, modul manifes ini dapat diimpor dari sesi PowerShell apa pun yang berjalan di ConsoleHost, terlepas dari versi host.

@{
    PowerShellHostName = 'ConsoleHost'
    # PowerShellHostVersion = ''
}

Dengan PowerShellHostVersion diatur ke 5.1, Anda hanya dapat mengimpor modul dari sesi PowerShell apa pun yang berjalan di ConsoleHost di mana versi host adalah 5.1 atau lebih tinggi.

@{
    PowerShellHostName    = 'ConsoleHost'
    PowerShellHostVersion = '5.1'
}

DotNetFrameworkVersion

Pengaturan ini menentukan versi minimum Microsoft .NET Framework yang diperlukan modul.

Nilai
Jenis Input System.String
Diperlukan No
Nilai jika tidak disetel $null
Menerima kartubebas No

Catatan

Pengaturan ini hanya berlaku untuk edisi PowerShell Desktop, seperti Windows PowerShell 5.1, dan hanya berlaku untuk versi .NET Framework yang lebih rendah dari 4.5. Persyaratan ini tidak berpengaruh untuk versi PowerShell atau .NET Framework yang lebih baru.

Nilai pengaturan ini harus dapat dikonversi ke System.Version saat Anda menjalankan Import-Module.

Misalnya, manifes ini menyatakan bahwa modulnya dapat diimpor dalam sesi PowerShell atau Windows PowerShell apa pun, terlepas dari versi Microsoft .NET Framework.

@{
    # DotNetFrameworkVersion = ''
}

Dengan DotNetFrameworkVersion diatur ke 4.0, Anda dapat mengimpor modul ini di sesi Windows PowerShell mana pun di mana versi terbaru microsoft .NET Framework yang tersedia setidaknya 4.0. Anda juga dapat mengimpornya di sesi PowerShell apa pun.

@{
    DotNetFrameworkVersion = '4.0'
}

CLRVersion

Pengaturan ini menentukan versi minimum Common Language Runtime (CLR) dari Microsoft .NET Framework yang diperlukan modul.

Nilai
Jenis Input System.String
Diperlukan No
Nilai jika tidak disetel $null
Menerima kartubebas No

Catatan

Pengaturan ini hanya berlaku untuk edisi PowerShell Desktop, seperti Windows PowerShell 5.1, dan hanya berlaku untuk versi .NET Framework yang lebih rendah dari 4.5. Persyaratan ini tidak berpengaruh untuk versi PowerShell atau .NET Framework yang lebih baru.

Nilai pengaturan ini harus dapat dikonversi ke System.Version saat Anda menjalankan Import-Module.

Misalnya, manifes ini menyatakan bahwa modulnya dapat diimpor dalam sesi PowerShell atau Windows PowerShell apa pun, terlepas dari versi versi CLR Microsoft .NET Framework.

@{
    # CLRVersion = ''
}

Dengan CLRVersion diatur ke 4.0, Anda dapat mengimpor modul ini dalam sesi Windows PowerShell mana pun di mana versi TERBARU CLR yang tersedia setidaknya 4.0. Anda juga dapat mengimpornya di sesi PowerShell apa pun.

@{
    CLRVersion = '4.0'
}

ProcessorArchitecture

Pengaturan ini menentukan arsitektur prosesor yang diperlukan modul.

Nilai
Jenis Input System.String
Nilai yang Diterima None, , MSILX86, IA64, , Amd64,Arm
Diperlukan No
Nilai jika tidak disetel None
Menerima kartubebas No

Nilai pengaturan ini harus dapat dikonversi ke System.Reflection.ProcessorArchitecture saat Anda menjalankan Import-Module.

Misalnya, manifes ini menyatakan bahwa modulnya dapat diimpor dalam sesi apa pun, terlepas dari arsitektur prosesor sistem.

@{
    # ProcessorArchitecture = ''
}

Dengan ProcessorArchitecture diatur ke Amd64, Anda hanya dapat mengimpor modul ini dalam sesi yang berjalan pada komputer dengan arsitektur yang cocok.

@{
    ProcessorArchitecture = 'Amd64'
}

RequiredModules

Pengaturan ini menentukan modul yang harus dalam status sesi global. Jika modul yang diperlukan tidak dalam status sesi global, PowerShell mengimpornya. Jika modul yang diperlukan tidak tersedia, Import-Module perintah gagal.

Nilai
Jenis Input System.String[], System.Collections.Hashtable[]
Diperlukan No
Nilai jika tidak disetel $null
Menerima kartubebas No

Entri untuk pengaturan ini dapat berupa nama modul, spesifikasi modul lengkap, atau jalur ke file modul.

Ketika nilai adalah jalur, jalur dapat sepenuhnya memenuhi syarat atau relatif.

Saat nilainya adalah spesifikasi nama atau modul, PowerShell mencari PSModulePath untuk modul yang ditentukan.

Spesifikasi modul adalah tabel hash yang memiliki kunci berikut.

  • ModuleName - Diperlukan. Menentukan nama modul.
  • GUID - Opsional. Menentukan GUID modul.
  • Diperlukan juga untuk menentukan setidaknya salah satu dari tiga kunci di bawah ini. Kunci RequiredVersion tidak dapat digunakan dengan ModuleVersion kunci atau MaximumVersion . Anda dapat menentukan rentang versi yang dapat diterima untuk modul dengan menentukan ModuleVersion kunci dan MaximumVersion bersama-sama.
    • ModuleVersion - Menentukan versi minimum modul yang dapat diterima.
    • RequiredVersion - Menentukan versi modul yang tepat dan diperlukan.
    • MaximumVersion - Menentukan versi maksimum modul yang dapat diterima.

Catatan

RequiredVersion ditambahkan di Windows PowerShell 5.0. MaximumVersion ditambahkan di Windows PowerShell 5.1.

Misalnya, manifes ini menyatakan bahwa modulnya tidak memerlukan modul lain untuk fungsionalitasnya.

@{
    # RequiredModules = @()
}

Manifes ini menyatakan bahwa ia memerlukan modul PSReadLine. Saat Anda menjalankan Import-Module manifes ini, PowerShell mengimpor versi terbaru PSReadLine yang tersedia untuk sesi. Jika tidak ada versi yang tersedia, impor mengembalikan kesalahan.

@{
    RequiredModules = @(
        'PSReadLine'
    )
}

Tip

Di PowerShell 2.0, Import-Module tidak mengimpor modul yang diperlukan secara otomatis. Ini hanya memverifikasi bahwa modul yang diperlukan berada dalam status sesi global.

Manifes ini menyatakan bahwa ia memerlukan versi modul PSReadLine yang di-vendor di folder modulnya sendiri. Saat Anda menjalankan Import-Module manifes ini, PowerShell mengimpor PSReadLine yang di-vendor dari jalur yang ditentukan.

@{
    RequiredModules = @(
        'Vendored\PSReadLine\PSReadLine.psd1'
    )
}

Manifes ini menyatakan bahwa manifes ini secara khusus memerlukan modul PSReadLine versi 2.0.0. Saat Anda menjalankan Import-Module manifes ini, PowerShell mengimpor PSReadLine versi 2.0.0 jika tersedia. Jika tidak tersedia, Import-Module mengembalikan kesalahan.

@{
    RequiredModules = @(
        @{
            ModuleName      = 'PSReadLine'
            RequiredVersion = '2.0.0'
        }
    )
}

Manifes ini menyatakan bahwa modul PSReadLine harus diimpor pada versi 2.0.0 atau yang lebih tinggi.

@{
    RequiredModules = @(
        @{
            ModuleName    = 'PSReadLine'
            ModuleVersion = '2.0.0'
        }
    )
}

Manifes ini menyatakan bahwa ia mengharuskan modul PSReadLine diimpor pada versi 2.0.0 atau yang lebih rendah.

@{
    RequiredModules = @(
        @{
            ModuleName     = 'PSReadLine'
            MaximumVersion = '2.0.0'
        }
    )
}

Manifes ini menyatakan bahwa ia memerlukan modul PSDesiredStateConfiguration untuk diimpor pada versi yang sama dengan atau lebih tinggi dari 2.0.0 tetapi tidak lebih tinggi dari 2.99.99.

@{
    RequiredModules = @(
        @{
            ModuleName     = 'PSDesiredStateConfiguration'
            ModuleVersion  = '2.0.0'
            MaximumVersion = '2.99.99'
        }
    )
}

RequiredAssemblies

Pengaturan ini menentukan file assembly (.dll) yang diperlukan modul. PowerShell memuat rakitan yang ditentukan sebelum memperbarui jenis atau format, mengimpor modul berlapis, atau mengimpor file modul yang ditentukan dalam nilai kunci RootModule .

Nilai
Jenis Input System.String[]
Diperlukan No
Nilai jika tidak disetel $null
Menerima kartubebas No

Entri untuk pengaturan ini bisa menjadi nama file rakitan atau jalur ke satu. Cantumkan semua rakitan yang diperlukan, bahkan jika mereka juga terdaftar sebagai modul biner di pengaturan NestedModules .

Manifes ini memerlukan perakitan example.dll . Sebelum memuat pemformatan atau mengetik file yang ditentukan dalam manifes ini, PowerShell memuat example.dll dari Assemblies folder yang terletak di direktori yang sama dengan manifes modul.

@{
    RequiredAssemblies = @(
        'Assemblies\Example.dll'
    )
}

ScriptsToProcess

Pengaturan ini menentukan file skrip (.ps1) yang berjalan dalam status sesi pemanggil saat modul diimpor. Anda dapat menggunakan skrip ini untuk menyiapkan lingkungan, sama seperti Anda dapat menggunakan skrip login.

Nilai
Jenis Input System.String[]
Diperlukan No
Nilai jika tidak disetel $null
Menerima kartubebas No

Untuk menentukan skrip yang berjalan dalam status sesi modul, gunakan kunci NestedModules .

Saat Anda mengimpor manifes ini, PowerShell menjalankan Initialize.ps1 dalam sesi Anda saat ini.

@{
    ScriptsToProcess = @(
        'Scripts\Initialize.ps1'
    )
}

Misalnya, jika Initialize.ps1 menulis pesan informasi dan mengatur $ExampleState variabel:

if ([string]::IsNullOrEmpty($ExampleState)) {
    Write-Information "Example not initialized."
    Write-Information "Initializing now..."
    $ExampleState = 'Initialized'
} else {
    Write-Information "Example already initialized."
}

Saat Anda mengimpor modul, skrip berjalan, menulis pesan tersebut dan mengatur $ExampleState dalam sesi Anda.

$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.

TypeToProcess

Pengaturan ini menentukan file jenis (.ps1xml) yang berjalan ketika modul diimpor.

Nilai
Jenis Input System.String[]
Diperlukan No
Nilai jika tidak disetel $null
Menerima kartubebas No

Saat Anda mengimpor modul, PowerShell menjalankan Update-TypeData cmdlet dengan file yang ditentukan. Karena file jenis tidak terlingkup, file tersebut memengaruhi semua status sesi dalam sesi.

Untuk informasi selengkapnya tentang file jenis, lihat about_Types.ps1xml

Misalnya, saat Anda mengimpor manifes ini, PowerShell memuat jenis yang ditentukan dalam Example.ps1xml file dari Types folder yang terletak di direktori yang sama dengan manifes modul.

@{
    TypesToProcess = @(
        'Types\Example.ps1xml'
    )
}

FormatsToProcess

Pengaturan ini menentukan file pemformatan (.ps1xml) yang berjalan ketika modul diimpor.

Nilai
Jenis Input System.String[]
Diperlukan No
Nilai jika tidak disetel $null
Menerima kartubebas No

Saat Anda mengimpor modul, PowerShell menjalankan Update-FormatData cmdlet dengan file yang ditentukan. Karena file pemformatan tidak terlingkup, file tersebut memengaruhi semua status sesi dalam sesi.

Untuk informasi selengkapnya tentang file jenis, lihat about_Format.ps1xml

Misalnya, saat Anda mengimpor modul ini, PowerShell memuat format yang ditentukan dalam Example.ps1xml file dari Formats folder yang terletak di direktori yang sama dengan manifes modul.

@{
    FormatsToProcess = @(
        'Formats\Example.ps1xml'
    )
}

NestedModules

Pengaturan ini menentukan modul skrip (.psm1) dan modul biner (.dll) yang diimpor ke dalam status sesi modul. Anda juga dapat menentukan file skrip (.ps1). File dalam pengaturan ini berjalan dalam urutan di mana file tersebut tercantum.

Nilai
Jenis Input System.String[], System.Collections.Hashtable[]
Diperlukan No
Nilai jika tidak disetel $null
Menerima kartubebas No

Entri untuk pengaturan ini dapat berupa nama modul, spesifikasi modul lengkap, atau jalur ke modul atau file skrip.

Ketika nilai adalah jalur, jalur dapat sepenuhnya memenuhi syarat atau relatif.

Saat nilainya adalah nama atau spesifikasi modul, PowerShell mencari PSModulePath untuk modul yang ditentukan.

Spesifikasi modul adalah tabel hash yang memiliki kunci berikut.

  • ModuleName - Diperlukan. Menentukan nama modul.
  • GUID - Opsional. Menentukan GUID modul.
  • Diperlukan juga untuk menentukan setidaknya salah satu dari tiga kunci di bawah ini. Kunci RequiredVersion tidak dapat digunakan dengan ModuleVersion kunci atau MaximumVersion . Anda dapat menentukan rentang versi yang dapat diterima untuk modul dengan menentukan ModuleVersion kunci dan MaximumVersion bersama-sama.
    • ModuleVersion - Menentukan versi minimum modul yang dapat diterima.
    • RequiredVersion - Menentukan versi modul yang tepat dan diperlukan.
    • MaximumVersion - Menentukan versi maksimum modul yang dapat diterima.

Catatan

RequiredVersion ditambahkan di Windows PowerShell 5.0. MaximumVersion ditambahkan di Windows PowerShell 5.1.

Setiap item yang perlu diekspor dari modul berlapis harus diekspor oleh modul berlapis menggunakan Export-ModuleMember cmdlet atau dicantumkan di salah satu properti ekspor:

  • FunctionsToExport
  • CmdletsToExport
  • VariablesToExport
  • AliasesToExport

Modul berlapis dalam status sesi modul tersedia untuk modul akar, tetapi tidak dikembalikan oleh Get-Module perintah dalam status sesi pemanggil.

Skrip (.ps1) yang tercantum dalam pengaturan ini dijalankan dalam status sesi modul, bukan dalam status sesi pemanggil. Untuk menjalankan skrip dalam status sesi pemanggil, cantumkan nama file skrip di pengaturan ScriptsToProcess .

Misalnya, saat Anda mengimpor manifes ini, Helpers.psm1 modul dimuat ke dalam status sesi modul akar. Cmdlet apa pun yang dideklarasikan dalam modul berlapis diekspor kecuali dibatasi lain.

@{
    NestedModules = @(
        'Helpers\Helpers.psm1'
    )
}

FunctionsToExport

Pengaturan ini menentukan fungsi yang diekspor modul. Anda dapat menggunakan pengaturan ini untuk membatasi fungsi yang diekspor oleh modul. Ini dapat menghapus fungsi dari daftar fungsi yang diekspor, tetapi tidak dapat menambahkan fungsi ke daftar.

Nilai
Jenis Input System.String[]
Diperlukan No
Nilai jika tidak disetel $null
Menerima kartubebas Ya

Anda dapat menentukan entri dalam pengaturan ini dengan kartubebas. Semua fungsi yang cocok dalam daftar fungsi yang diekspor diekspor.

Tip

Untuk performa dan penemuan, Anda harus selalu secara eksplisit mencantumkan fungsi yang Anda inginkan untuk diekspor modul Anda dalam pengaturan ini tanpa menggunakan kartubebas apa pun.

Misalnya, saat Anda mengimpor modul dengan pengaturan yang dikomentari, semua fungsi dalam modul akar dan modul berlapis apa pun diekspor.

@{
    # FunctionsToExport = @()
}

Manifes ini secara fungsional identik dengan tidak menentukan pengaturan sama sekali.

@{
    FunctionsToExport = '*'
}

Dengan FunctionsToExport ditetapkan sebagai array kosong, ketika Anda mengimpor modul ini, tidak ada fungsi modul akar atau ekspor modul berlapis apa pun yang tersedia.

@{
    FunctionsToExport = @()
}

Catatan

Jika Anda membuat manifes modul dengan New-ModuleManifest perintah dan tidak menentukan parameter FunctionsToExport , manifes yang dibuat memiliki pengaturan ini yang ditentukan sebagai array kosong. Kecuali Anda mengedit manifes, tidak ada fungsi dari modul yang diekspor.

Dengan FunctionsToExport diatur ke hanya menyertakan Get-Example fungsi, ketika Anda mengimpor modul ini hanya Get-Example fungsi yang tersedia, bahkan jika fungsi lain diekspor oleh modul akar atau modul berlapis apa pun.

@{
    FunctionsToExport = @(
        'Get-Example'
    )
}

Dengan FunctionsToExport diatur dengan string kartubebas, ketika Anda mengimpor modul ini fungsi apa pun yang namanya berakhir dengan Example tersedia, bahkan jika fungsi lain diekspor sebagai anggota modul oleh modul root atau modul berlapis apa pun.

@{
    FunctionsToExport = @(
        '*Example'
    )
}

CmdletsToExport

Pengaturan ini menentukan cmdlet yang diekspor modul. Anda dapat menggunakan pengaturan ini untuk membatasi cmdlet yang diekspor oleh modul. Ini dapat menghapus cmdlet dari daftar anggota modul yang diekspor, tetapi tidak dapat menambahkan cmdlet ke daftar.

Nilai
Jenis Input System.String[]
Diperlukan No
Nilai jika tidak disetel $null
Menerima kartubebas Ya

Anda dapat menentukan entri dalam pengaturan ini dengan kartubebas. Semua cmdlet yang cocok dalam daftar cmdlet yang diekspor diekspor.

Tip

Untuk performa dan penemuan, Anda harus selalu secara eksplisit mencantumkan cmdlet yang Anda inginkan untuk diekspor modul Anda dalam pengaturan ini tanpa menggunakan wildcard apa pun.

Misalnya, saat Anda mengimpor modul dengan pengaturan ini dikomentari, semua cmdlet dalam modul akar dan modul berlapis apa pun diekspor.

@{
    # CmdletsToExport = @()
}

Manifes ini secara fungsional identik dengan tidak menentukan pengaturan sama sekali.

@{
    CmdletsToExport = '*'
}

Dengan CmdletsToExport ditetapkan sebagai array kosong, ketika Anda mengimpor modul ini tanpa cmdlet modul akar atau ekspor modul berlapis apa pun tersedia.

@{
    CmdletsToExport = @()
}

Catatan

Jika Anda membuat manifes modul dengan New-ModuleManifest perintah dan tidak menentukan parameter CmdletsToExport , manifes yang dibuat memiliki pengaturan ini yang ditentukan sebagai array kosong. Kecuali Anda mengedit manifes, tidak ada cmdlet dari modul yang diekspor.

Dengan CmdletsToExport diatur ke hanya menyertakan Get-Example cmdlet, ketika Anda mengimpor modul ini hanya Get-Example cmdlet yang tersedia, bahkan jika cmdlet lain diekspor oleh modul akar atau modul berlapis apa pun.

@{
    CmdletsToExport = @(
        'Get-Example'
    )
}

Dengan CmdletsToExport yang diatur dengan string kartubebas, ketika Anda mengimpor modul ini cmdlet apa pun yang namanya berakhir dengan Example tersedia, bahkan jika cmdlet lain diekspor sebagai anggota modul oleh modul akar atau modul berlapis apa pun.

@{
    CmdletsToExport = @(
        '*Example'
    )
}

VariablesToExport

Pengaturan ini menentukan variabel yang diekspor modul. Anda dapat menggunakan pengaturan ini untuk membatasi variabel yang diekspor oleh modul. Ini dapat menghapus variabel dari daftar anggota modul yang diekspor, tetapi tidak dapat menambahkan variabel ke daftar.

Nilai
Jenis Input System.String[]
Diperlukan No
Nilai jika tidak disetel $null
Menerima kartubebas Ya

Anda dapat menentukan entri dalam pengaturan ini dengan kartubebas. Semua variabel yang cocok dalam daftar anggota modul yang diekspor diekspor.

Tip

Untuk performa dan penemuan, Anda harus selalu secara eksplisit mencantumkan variabel yang Anda inginkan untuk diekspor modul Anda dalam pengaturan ini tanpa menggunakan kartubebas apa pun.

Misalnya, saat Anda mengimpor modul dengan pengaturan ini dikomentari, semua variabel dalam modul akar dan modul berlapis apa pun diekspor.

@{
    # VariablesToExport = @()
}

Manifes ini secara fungsional identik dengan tidak menentukan pengaturan sama sekali.

@{
    VariablesToExport = '*'
}

Catatan

Jika Anda membuat manifes modul dengan New-ModuleManifest perintah dan tidak menentukan parameter VariablesToExport , manifes yang dibuat memiliki pengaturan ini yang ditentukan sebagai '*'. Kecuali Anda mengedit manifes, semua variabel dari modul diekspor.

Dengan VariablesToExport ditetapkan sebagai array kosong, ketika Anda mengimpor modul ini, tidak ada variabel modul akar atau ekspor modul berlapis apa pun yang tersedia.

@{
    VariablesToExport = @()
}

Dengan VariablesToExport diatur ke hanya menyertakan SomeExample variabel, ketika Anda mengimpor modul ini hanya $SomeExample variabel yang tersedia, bahkan jika variabel lain diekspor oleh modul akar atau modul berlapis apa pun.

@{
    VariablesToExport = @(
        'SomeExample'
    )
}

Dengan VariablesToExport diatur dengan string kartubebas, ketika Anda mengimpor modul ini variabel apa pun yang namanya berakhir dengan Example tersedia, bahkan jika variabel lain diekspor sebagai anggota modul oleh modul akar atau modul berlapis apa pun.

@{
    VariablesToExport = @(
        '*Example'
    )
}

DscResourcesToExport

Pengaturan ini menentukan Sumber Daya DSC yang diekspor modul. Anda dapat menggunakan pengaturan ini untuk membatasi Sumber Daya DSC berbasis kelas yang diekspor oleh modul. Ini dapat menghapus Sumber Daya DSC dari daftar anggota modul yang diekspor, tetapi tidak dapat menambahkan Sumber Daya DSC ke daftar.

Nilai
Jenis Input System.String[]
Diperlukan No
Nilai jika tidak disetel $null
Menerima kartubebas Ya

Anda dapat menentukan entri dalam pengaturan ini dengan kartubebas. Semua Sumber Daya DSC berbasis kelas yang cocok dalam modul diekspor.

Tip

Untuk penemuan, Anda harus selalu secara eksplisit mencantumkan semua Sumber Daya DSC yang diekspor modul Anda.

Untuk informasi selengkapnya tentang penulisan dan penggunaan Sumber Daya DSC, lihat dokumentasi untuk DSC.

Manifes ini mengekspor semua Sumber Daya DSC berbasis kelas dan BERBASIS MOF yang ditentukan dalam modul akar dan modul berlapis apa pun.

@{
    # DscResourcesToExport = @()
}

Manifes ini mengekspor semua Sumber Daya DSC berbasis MOF yang ditentukan dalam modul akar dan modul berlapis apa pun, tetapi hanya satu Sumber Daya DSC berbasis kelas, ExampleClassResource.

@{
    DscResourcesToExport = @(
        'ExampleClassResource'
    )
}

Manifes ini mengekspor semua Sumber Daya DSC yang disertakan. Bahkan jika sumber daya Berbasis MOF tidak tercantum, modul akan tetap mengekspornya.

@{
    DscResourcesToExport = @(
        'ExampleClassResource'
        'ExampleMofResourceFirst'
    )
}

ModuleList

Pengaturan ini adalah daftar inventori informasi modul yang disertakan dalam yang satu ini. Daftar ini tidak memengaruhi perilaku modul.

Nilai
Jenis Input System.String[], System.Collections.Hashtable[]
Diperlukan No
Nilai jika tidak disetel $null
Menerima kartubebas No

Entri untuk pengaturan ini dapat berupa nama modul, spesifikasi modul lengkap, atau jalur ke modul atau file skrip.

Ketika nilai adalah jalur, jalur dapat sepenuhnya memenuhi syarat atau relatif.

Saat nilainya adalah nama atau spesifikasi modul, PowerShell mencari PSModulePath untuk modul yang ditentukan.

Spesifikasi modul adalah tabel hash yang memiliki kunci berikut.

  • ModuleName - Diperlukan. Menentukan nama modul.
  • GUID - Opsional. Menentukan GUID modul.
  • Diperlukan juga untuk menentukan setidaknya salah satu dari tiga kunci di bawah ini. Kunci RequiredVersion tidak dapat digunakan dengan ModuleVersion kunci atau MaximumVersion . Anda dapat menentukan rentang versi yang dapat diterima untuk modul dengan menentukan ModuleVersion kunci dan MaximumVersion bersama-sama.
    • ModuleVersion - Menentukan versi minimum modul yang dapat diterima.
    • RequiredVersion - Menentukan versi modul yang tepat dan diperlukan.
    • MaximumVersion - Menentukan versi maksimum modul yang dapat diterima.

Catatan

RequiredVersion ditambahkan di Windows PowerShell 5.0. MaximumVersion ditambahkan di Windows PowerShell 5.1.

Manifes ini tidak menyediakan daftar informasi modul yang disertakannya. Ini mungkin atau mungkin tidak memiliki modul. Meskipun pengaturan ini tidak ditentukan, modul apa pun yang tercantum dalam pengaturan RootModule, ScriptsToProcess, atau NestedModules masih bertingkah normal.

@{
    # ModuleList = @()
}

Manifes ini menyatakan bahwa satu-satunya modul yang disertakan adalah Example.psm1 dan submodul First.psm1 dan Second.psm1 dalam Submodules folder.

@{
    ModuleList = @(
        'Example.psm1'
        'Submodules\First.psm1'
        'Submodules\Second.psm1'
    )
}

Daftar File

Pengaturan ini adalah daftar inventori informasi file yang disertakan dalam modul ini. Daftar ini tidak memengaruhi perilaku modul.

Nilai
Jenis Input System.String[]
Diperlukan No
Nilai jika tidak disetel $null
Menerima kartubebas Ya

Entri untuk pengaturan ini harus menjadi jalur relatif ke file dari folder yang berisi manifes modul.

Ketika pengguna memanggil Get-Module terhadap manifes dengan pengaturan ini yang ditentukan, properti FileList berisi jalur lengkap ke file-file ini, menggabungkan jalur modul dengan jalur relatif setiap entri.

Manifes ini tidak menyertakan daftar filenya.

@{
    # FileList = @()
}

Manifes ini menyatakan bahwa satu-satunya file yang disertakannya tercantum dalam pengaturan ini.

@{
    FileList = @(
        'Example.psd1'
        'Example.psm1'
        'Assemblies\Example.dll'
        'Scripts\Initialize.ps1'
        'Submodules\First.psm1'
        'Submodules\Second.psm1'
    )
}

PrivateData

Pengaturan ini menentukan tabel hash data yang tersedia untuk perintah atau fungsi apa pun dalam cakupan modul akar.

Nilai
Jenis Input System.Collections.Hashtable
Diperlukan Galeri PowerShell, Crescendo
Nilai jika tidak disetel $null
Menerima kartubebas No

Saat Anda mengekspor manifes Crescendo untuk membuat modul baru, Export-CrescendoModule menambahkan dua kunci ke PrivateData

  • CrescendoGenerated - tanda waktu saat modul diekspor
  • CrescendoVersion - versi Crescendo yang digunakan untuk mengekspor modul

Anda dapat menambahkan kunci Anda sendiri untuk menyimpan metadata yang ingin Anda lacak. Setiap kunci yang ditambahkan ke pengaturan ini tersedia untuk fungsi dan cmdlet dalam modul akar menggunakan $MyInvocation.MyCommand.Module.PrivateData. Tabel hash tidak tersedia dalam cakupan modul itu sendiri, hanya dalam cmdlet yang Anda tentukan dalam modul.

Misalnya, manifes ini mendefinisikan kunci PublishedDate di PrivateData.

@{
    PrivateData = @{
        PublishedDate = '2022-06-01'
    }
}

Cmdlet dalam modul dapat mengakses nilai ini dengan $MyInvocation variabel .

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"
    }
}

Setelah modul diimpor, fungsi menggunakan nilai dari PrivateData untuk menentukan kapan modul diterbitkan.

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

Properti anak PSData mendefinisikan tabel hash nilai yang mendukung skenario ekstensi tertentu.

Nilai
Jenis Input System.Collections.Hashtable
Diperlukan Galeri PowerShell, Fitur eksperimental, modul Crescendo
Nilai jika tidak disetel $null
Menerima kartubebas No

Properti anak PSData digunakan untuk skenario berikut:

  • Galeri PowerShell - Saat Anda membuat manifes modul menggunakan New-ModuleManifest cmdlet telah mengisi hashtable PSData dengan kunci place holder yang diperlukan saat menerbitkan modul ke Galeri PowerShell. Untuk informasi selengkapnya tentang manifes modul dan penerbitan ke Galeri PowerShell, lihat Nilai manifes paket yang memengaruhi UI Galeri PowerShell.
  • Fitur eksperimental - Metadata tentang fitur eksperimental disimpan di properti ExperimentalFeatures PSData. Properti ExperimentalFeatures adalah array hashtable yang berisi nama dan deskripsi fitur. Untuk informasi selengkapnya, lihat Mendeklarasikan fitur eksperimental dalam modul.
  • Modul Crescendo - Saat Anda mengekspor manifes Crescendo untuk membuat modul baru, Export-CrescendoModule menambahkan nilai CrescendoBuilt ke properti PSData.Tags . Anda dapat menggunakan tag ini untuk menemukan modul di Galeri PowerShell yang dibuat menggunakan Crescendo. Untuk informasi selengkapnya, lihat Export-CrescendoModule.

HelpInfoURI

Pengaturan ini menentukan alamat internet file XML HelpInfo untuk modul.

Nilai
Jenis Input System.String
Diperlukan No
Nilai jika tidak disetel $null
Menerima kartubebas No

Nilai pengaturan ini harus berupa Pengidentifikasi Sumber Daya Seragam (URI) yang dimulai dengan http atau https.

File XML HelpInfo mendukung fitur Bantuan yang Dapat Diperbarui yang diperkenalkan di PowerShell 3.0. Ini berisi informasi tentang lokasi file bantuan yang dapat diunduh untuk modul dan nomor versi file bantuan terbaru untuk setiap lokal yang didukung.

Untuk informasi tentang Bantuan yang Dapat Diperbarui, lihat about_Updatable_Help. Untuk informasi tentang file XML HelpInfo, lihat Mendukung Bantuan yang Dapat Diperbarui.

Misalnya, modul ini mendukung bantuan yang dapat diperbarui.

@{
    HelpInfoUri = 'http://https://go.microsoft.com/fwlink/?LinkID=603'
}

DefaultCommandPrefix

Pengaturan ini menentukan awalan yang diawali ke kata benda semua perintah dalam modul saat diimpor ke dalam sesi. Awalan membantu mencegah konflik nama perintah dalam sesi pengguna.

Nilai
Jenis Input System.String
Diperlukan No
Nilai jika tidak disetel $null
Menerima kartubebas No

Pengguna modul dapat mengambil alih awalan ini dengan menentukan parameter AwalanImport-Module cmdlet.

Pengaturan ini diperkenalkan di PowerShell 3.0.

Ketika manifes ini diimpor, cmdlet apa pun yang diimpor dari modul ini telah Example ditambahkan ke kata benda atas namanya. Misalnya, Get-Item diimpor sebagai Get-ExampleItem.

@{
    DefaultCommandPrefix = 'Example'
}

Lihat juga