Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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 PowerShell Gallery. 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 = ''
# ExternalModuleDependencies = @()
} # 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 mode bahasa Restricted. mode Restricted membatasi perintah dan variabel yang dapat digunakan.
Perintah yang diizinkan
Import-LocalizedDataConvertFrom-StringDataWrite-HostOut-HostJoin-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 "Ya", pengaturan diperlukan untuk mengimpor modul dan menerbitkannya ke PowerShell Gallery. Jika "Tidak", itu tidak diperlukan. Jika itu
PowerShell Gallery, itu hanya diperlukan untuk menerbitkan ke PowerShell Gallery. - 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 | Tidak |
| Nilai jika tidak diatur | $null |
| Menerima kartubebas | Tidak |
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) - a Windows PowerShell 5.1 Workflow (
.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
.ps1atau.psm1membuat jenis modul Skrip - file
.psd1membuat jenis modul Manifest - file
.dllmembuat jenis modul biner - file
.cdxmlmembuat jenis modul CIM - file
.xamlmembuat jenis modul Alur Kerja
Secara default, semua anggota modul di RootModule diekspor.
Ujung
Kecepatan pemuatan modul berbeda antara Biner , Skrip, dan jenis modul CIM. Untuk informasi selengkapnya, lihat pertimbangan penulisan modul PowerShell
Misalnya, ModuleType modul ini Manifes . Satu-satunya anggota modul yang dapat diekspor modul ini adalah yang ditentukan dalam modul yang ditentukan dengan pengaturan NestedModules.
@{
RootModule = ''
}
Nota
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. Saat 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 diatur | Tidak |
| Menerima kartubebas | Tidak |
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 modul tersebut 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 | Tidak |
| Nilai jika tidak diatur | $null |
| Menerima kartubebas | Tidak |
Jika nilai pengaturan ini $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 nilai variabel otomatis $PSEdition disertakan dalam pengaturan.
Nota
Karena variabel otomatis $PSEdition 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 nilai variabel otomatis $PSEditionCore.
@{
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 | Tidak |
| Nilai jika tidak diatur | 00000000-0000-0000-0000-000000000000 |
| Menerima kartubebas | Tidak |
Nilai pengaturan ini harus dapat dikonversi ke System.Guid saat Anda menjalankan Import-Module.
Hati
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'
}
Author
Pengaturan ini mengidentifikasi penulis modul.
| Nilai | |
|---|---|
| Jenis Input | System.String |
| Diperlukan | PowerShell Gallery |
| Nilai jika tidak diatur | $null |
| Menerima kartubebas | Tidak |
Manifes ini menyatakan bahwa penulis modul adalah Tim Pengalaman Pengembang Contoso.
@{
Author = 'Contoso Developer Experience Team'
}
CompanyName
Pengaturan ini mengidentifikasi perusahaan atau vendor yang membuat modul.
| Nilai | |
|---|---|
| Jenis Input | System.String |
| Diperlukan | Tidak |
| Nilai jika tidak diatur | $null |
| Menerima kartubebas | Tidak |
Manifes ini menyatakan bahwa modul dibuat oleh Contoso, Ltd.
@{
CompanyName = 'Contoso, Ltd.'
}
Copyright
Pengaturan ini menentukan pernyataan hak cipta untuk modul.
| Nilai | |
|---|---|
| Jenis Input | System.String |
| Diperlukan | Tidak |
| Nilai jika tidak diatur | $null |
| Menerima kartubebas | Tidak |
Manifes ini menyatakan pernyataan hak cipta yang mencairkan semua hak untuk Contoso, Ltd. per 2022.
@{
Copyright = '(c) 2022 Contoso, Ltd. All rights reserved.'
}
Description
Pengaturan ini menjelaskan modul pada tingkat tinggi.
| Nilai | |
|---|---|
| Jenis Input | System.String |
| Diperlukan | PowerShell Gallery |
| Nilai jika tidak diatur | $null |
| Menerima kartubebas | Tidak |
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 | Tidak |
| Nilai jika tidak diatur | $null |
| Menerima kartubebas | Tidak |
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 Host ISE Windows PowerShell atau ConsoleHost.
| Nilai | |
|---|---|
| Jenis Input | System.String |
| Diperlukan | Tidak |
| Nilai jika tidak diatur | $null |
| Menerima kartubebas | Tidak |
Anda dapat menemukan nama host untuk sesi dengan pernyataan $Host.Name. Misalnya, Anda dapat melihat bahwa host untuk sesi jarak jauh 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 | Tidak |
| Nilai jika tidak diatur | $null |
| Menerima kartubebas | Tidak |
Nilai pengaturan ini harus dapat dikonversi ke System.Version saat Anda menjalankan Import-Module.
Hati
Meskipun pengaturan ini dapat digunakan tanpa pengaturan PowerShellHostName, pengaturan ini meningkatkan kemungkinan perilaku yang tidak 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 | Tidak |
| Nilai jika tidak diatur | $null |
| Menerima kartubebas | Tidak |
Nota
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 dalam 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 | Tidak |
| Nilai jika tidak diatur | $null |
| Menerima kartubebas | Tidak |
Nota
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 | Tidak |
| Nilai jika tidak diatur | None |
| Menerima kartubebas | Tidak |
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, perintah Import-Module gagal.
| Nilai | |
|---|---|
| Jenis Input |
System.String[], System.Collections.Hashtable[] |
| Diperlukan | Tidak |
| Nilai jika tidak diatur | $null |
| Menerima kartubebas | Tidak |
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- yang Diperlukan. Menentukan nama modul. -
GUID- Opsional . Menentukan GUID modul. - Ini juga Diperlukan untuk menentukan setidaknya salah satu dari tiga kunci di bawah ini. Kunci
RequiredVersiontidak dapat digunakan dengan kunciModuleVersionatauMaximumVersion. Anda dapat menentukan rentang versi yang dapat diterima untuk modul dengan menentukan kunciModuleVersiondanMaximumVersionbersama-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.
-
Nota
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 pada manifes ini, PowerShell mengimpor versi terbaru PSReadLine yang tersedia untuk sesi. Jika tidak ada versi yang tersedia, impor mengembalikan kesalahan.
@{
RequiredModules = @(
'PSReadLine'
)
}
Ujung
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 pada 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 pada 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 | Tidak |
| Nilai jika tidak diatur | $null |
| Menerima kartubebas | Tidak |
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 rakitan example.dll. Sebelum memuat pemformatan atau mengetik file yang ditentukan dalam manifes ini, PowerShell memuat example.dll dari folder Assemblies 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 | Tidak |
| Nilai jika tidak diatur | $null |
| Menerima kartubebas | Tidak |
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 variabel $ExampleState:
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 di 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 saat modul diimpor.
| Nilai | |
|---|---|
| Jenis Input | System.String[] |
| Diperlukan | Tidak |
| Nilai jika tidak diatur | $null |
| Menerima kartubebas | Tidak |
Saat Anda mengimpor modul, PowerShell menjalankan cmdlet Update-TypeData 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 file Example.ps1xml dari folder Types yang terletak di direktori yang sama dengan manifes modul.
@{
TypesToProcess = @(
'Types\Example.ps1xml'
)
}
FormatsToProcess
Pengaturan ini menentukan file pemformatan (.ps1xml) yang berjalan saat modul diimpor.
| Nilai | |
|---|---|
| Jenis Input | System.String[] |
| Diperlukan | Tidak |
| Nilai jika tidak diatur | $null |
| Menerima kartubebas | Tidak |
Saat Anda mengimpor modul, PowerShell menjalankan cmdlet Update-FormatData 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 file Example.ps1xml dari folder Formats 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 | Tidak |
| Nilai jika tidak diatur | $null |
| Menerima kartubebas | Tidak |
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- yang Diperlukan. Menentukan nama modul. -
GUID- Opsional . Menentukan GUID modul. - Ini juga Diperlukan untuk menentukan setidaknya salah satu dari tiga kunci di bawah ini. Kunci
RequiredVersiontidak dapat digunakan dengan kunciModuleVersionatauMaximumVersion. Anda dapat menentukan rentang versi yang dapat diterima untuk modul dengan menentukan kunciModuleVersiondanMaximumVersionbersama-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.
-
Nota
RequiredVersion ditambahkan di Windows PowerShell 5.0.
MaximumVersion ditambahkan di Windows PowerShell 5.1.
Item apa pun yang perlu diekspor dari modul berlapis harus diekspor oleh modul berlapis menggunakan cmdlet Export-ModuleMember atau tercantum di salah satu properti ekspor:
- FunctionsToExport
- CmdletsToExport
- VariablesToExport
- AliasesToExport
Modul berlapis dalam status sesi modul tersedia untuk modul akar, tetapi tidak dikembalikan oleh perintah Get-Module 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, modul Helpers.psm1 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 | Tidak |
| Nilai jika tidak diatur | $null |
| Menerima kartubebas | Ya |
Anda dapat menentukan entri dalam pengaturan ini dengan kartubebas. Semua fungsi yang cocok dalam daftar fungsi yang diekspor diekspor.
Ujung
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 = @()
}
Nota
Jika Anda membuat manifes modul dengan perintah New-ModuleManifest 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 fungsi Get-Example, ketika Anda mengimpor modul ini hanya fungsi Get-Example 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 akar 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 | Tidak |
| Nilai jika tidak diatur | $null |
| Menerima kartubebas | Ya |
Anda dapat menentukan entri dalam pengaturan ini dengan kartubebas. Semua cmdlet yang cocok dalam daftar cmdlet yang diekspor diekspor.
Ujung
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, tidak ada cmdlet modul akar atau ekspor modul berlapis apa pun yang tersedia.
@{
CmdletsToExport = @()
}
Nota
Jika Anda membuat manifes modul dengan perintah New-ModuleManifest 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 cmdlet Get-Example, ketika Anda mengimpor modul ini hanya cmdlet Get-Example yang tersedia, bahkan jika cmdlet lain diekspor oleh modul root atau modul berlapis apa pun.
@{
CmdletsToExport = @(
'Get-Example'
)
}
Dengan CmdletsToExport 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 | Tidak |
| Nilai jika tidak diatur | $null |
| Menerima kartubebas | Ya |
Anda dapat menentukan entri dalam pengaturan ini dengan kartubebas. Semua variabel yang cocok dalam daftar anggota modul yang diekspor diekspor.
Ujung
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 = '*'
}
Nota
Jika Anda membuat manifes modul dengan perintah New-ModuleManifest 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 variabel SomeExample, ketika Anda mengimpor modul ini hanya variabel $SomeExample yang tersedia, bahkan jika variabel lain diekspor oleh modul akar atau modul berlapis apa pun.
@{
VariablesToExport = @(
'SomeExample'
)
}
Dengan VariablesToExport diatur dengan string wildcard, ketika Anda mengimpor modul ini variabel apa pun yang namanya berakhir dengan Example tersedia, bahkan jika variabel lain diekspor sebagai anggota modul oleh modul root 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 | Tidak |
| Nilai jika tidak diatur | $null |
| Menerima kartubebas | Ya |
Anda dapat menentukan entri dalam pengaturan ini dengan kartubebas. Semua Sumber Daya DSC berbasis kelas yang cocok dalam modul diekspor.
Ujung
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 MOF-Based 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 | Tidak |
| Nilai jika tidak diatur | $null |
| Menerima kartubebas | Tidak |
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- yang Diperlukan. Menentukan nama modul. -
GUID- Opsional . Menentukan GUID modul. - Ini juga Diperlukan untuk menentukan setidaknya salah satu dari tiga kunci di bawah ini. Kunci
RequiredVersiontidak dapat digunakan dengan kunciModuleVersionatauMaximumVersion. Anda dapat menentukan rentang versi yang dapat diterima untuk modul dengan menentukan kunciModuleVersiondanMaximumVersionbersama-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.
-
Nota
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 disertakannya adalah Example.psm1 dan submodul First.psm1 dan Second.psm1 di folder Submodules.
@{
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 | Tidak |
| Nilai jika tidak diatur | $null |
| Menerima kartubebas | Ya |
Entri untuk pengaturan ini harus menjadi jalur relatif ke file dari folder yang berisi manifes modul.
Saat 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 | PowerShell GalleryCrescendo |
| Nilai jika tidak diatur | $null |
| Menerima kartubebas | Tidak |
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 variabel $MyInvocation.
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 PSData turunan menentukan tabel hash nilai yang mendukung skenario ekstensi tertentu.
| Nilai | |
|---|---|
| Jenis Input | System.Collections.Hashtable |
| Diperlukan | PowerShell Gallery, Fitur eksperimental, modul Crescendo |
| Nilai jika tidak diatur | $null |
| Menerima kartubebas | Tidak |
Properti anak PSData digunakan untuk skenario berikut:
-
PowerShell Gallery - Ketika Anda membuat manifes modul menggunakan
New-ModuleManifestcmdlet mengisi hashtable PSData dengan kunci tempat penampung yang diperlukan saat menerbitkan modul ke PowerShell Gallery. Untuk informasi selengkapnya tentang manifes modul dan penerbitan ke Galeri PowerShell, lihat Nilai manifes paket PowerShell Gallery yang memengaruhi UI. - Fitur eksperimental - Metadata tentang fitur eksperimental disimpan di properti ExperimentalFeaturesPSData. 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-CrescendoModulemenambahkan nilaiCrescendoBuiltke properti PSData.Tags. Anda dapat menggunakan tag ini untuk menemukan modul dalam PowerShell Gallery yang dibuat menggunakan Crescendo. Untuk informasi selengkapnya, lihat Export-CrescendoModule. - Properti PSData.ExternalModuleDependencies adalah array nama modul yang merupakan dependensi untuk modul ini. Properti ini hanya bersifat informasi dan tidak memengaruhi penginstalan atau pemuatan modul.
HelpInfoURI
Pengaturan ini menentukan alamat internet file XML HelpInfo untuk modul.
| Nilai | |
|---|---|
| Jenis Input | System.String |
| Diperlukan | Tidak |
| Nilai jika tidak diatur | $null |
| Menerima kartubebas | Tidak |
Nilai pengaturan ini harus merupakan 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 | Tidak |
| Nilai jika tidak diatur | $null |
| Menerima kartubebas | Tidak |
Pengguna modul dapat mengambil alih awalan ini dengan menentukan parameter Awalan cmdlet Import-Module.
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
- about_PowerShell_Editions
- New-ModuleManifest
- Test-ModuleManifest
- Modul dengan Edisi PowerShell yang kompatibel
- Nilai manifes paket yang berdampak pada PowerShell Gallery UI
- pertimbangan penulisan modul PowerShell