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 ituNo
, itu tidak diperlukan untuk keduanya. Jika ,PowerShell Gallery
hanya 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.'
}
Hak Cipta
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 , , MSIL X86 , 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 denganModuleVersion
kunci atauMaximumVersion
. Anda dapat menentukan rentang versi yang dapat diterima untuk modul dengan menentukanModuleVersion
kunci danMaximumVersion
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 denganModuleVersion
kunci atauMaximumVersion
. Anda dapat menentukan rentang versi yang dapat diterima untuk modul dengan menentukanModuleVersion
kunci danMaximumVersion
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 denganModuleVersion
kunci atauMaximumVersion
. Anda dapat menentukan rentang versi yang dapat diterima untuk modul dengan menentukanModuleVersion
kunci danMaximumVersion
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 nilaiCrescendoBuilt
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 Awalan Import-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'
}