เกี่ยวกับโมดูลมานิเฟสต์
คำอธิบายสั้น ๆ
อธิบายการตั้งค่าและแนวทางปฏิบัติในการเขียนไฟล์รายการโมดูล
คำอธิบายยาว
รายการโมดูลคือไฟล์ข้อมูล PowerShell (.psd1) ที่มีตารางแฮช คู่คีย์-ค่าในตารางแฮชจะอธิบายเนื้อหาและคุณลักษณะของโมดูล กำหนดข้อกำหนดเบื้องต้น และควบคุมวิธีการประมวลผลส่วนประกอบ
รายการไม่จำเป็นต้องโหลดโมดูล แต่จำเป็นต้องเผยแพร่โมดูลไปยัง PowerShell Gallery นอกจากนี้ Manifests ยังช่วยให้คุณสามารถแยกการใช้งานโมดูลของคุณออกจากวิธีการโหลดได้ ด้วยรายการ คุณสามารถกำหนดข้อกำหนด ความเข้ากันได้ ลำดับการโหลด และอื่นๆ ได้
เมื่อคุณใช้ New-ModuleManifest โดยไม่ระบุพารามิเตอร์ใดๆ สำหรับการตั้งค่าของรายการ มันจะเขียนไฟล์รายการขั้นต่ำ ตัวอย่างด้านล่างแสดงเอาต์พุตเริ่มต้นนี้ โดยตัดคำอธิบายและการเว้นวรรคเพื่อความกระชับ:
@{
# 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 = ''
}
คุณสามารถใช้ Test-ModuleManifest เพื่อตรวจสอบรายการโมดูลก่อนที่คุณจะเผยแพร่โมดูลของคุณ Test-ModuleManifest ส่งคืนข้อผิดพลาดหากรายการไม่ถูกต้องหรือไม่สามารถนำเข้าโมดูลเข้าสู่เซสชันปัจจุบันได้ เนื่องจากเซสชันไม่ตรงตามข้อกำหนดที่ตั้งไว้ในรายการ
การใช้โค้ดสคริปต์ในรายการโมดูล
ค่าที่กำหนดการตั้งค่าในไฟล์ Manifest อาจเป็นนิพจน์ที่ได้รับการประเมินโดย PowerShell สิ่งนี้ช่วยให้คุณสร้างเส้นทางและกำหนดค่าตามเงื่อนไขตามตัวแปรได้
เมื่อคุณนำเข้าโมดูลโดยใช้ Import-Module รายการจะถูกประเมินในโหมดภาษา Restricted โหมด จำกัด จะจำกัดคำสั่งและตัวแปรที่สามารถใช้ได้
คำสั่งที่อนุญาต
Import-LocalizedDataConvertFrom-StringDataWrite-HostOut-HostJoin-Pathตัวแปรที่อนุญาต
$PSScriptRoot$PSEdition$EnabledExperimentalFeatures$ENV:TEMPสำหรับข้อมูลเพิ่มเติม โปรดดู about_Language_Modes
การตั้งค่ารายการ
ส่วนต่อไปนี้ให้รายละเอียดการตั้งค่าทั้งหมดที่มีอยู่ในรายการโมดูลและวิธีการใช้งาน โดยเริ่มต้นด้วยบทสรุปของฉากนี้ และตามด้วยเมทริกซ์ที่แสดงรายการ:
- ประเภทอินพุต: ประเภทออบเจ็กต์ที่คุณสามารถระบุสำหรับการตั้งค่านี้ในรายการ
- จำเป็น: หากค่านี้เป็น
ใช่จำเป็นต้องมีการตั้งค่าทั้งเพื่อนำเข้าโมดูลและเผยแพร่ไปยัง PowerShell Gallery หากเป็นไม่ก็จำเป็นสำหรับทั้งสองอย่าง หากเป็นPowerShell Galleryจำเป็นสำหรับการเผยแพร่ไปยัง PowerShell Gallery เท่านั้น - ค่าหากไม่ได้ตั้งค่า: ค่าที่การตั้งค่านี้มีเมื่อนำเข้าและไม่ได้ตั้งค่าอย่างชัดเจน
- ยอมรับไวด์การ์ด: การตั้งค่านี้สามารถรับค่าไวด์การ์ดได้หรือไม่
RootModule
การตั้งค่านี้ระบุไฟล์หลักหรือไฟล์รูทของโมดูล เมื่อนำเข้าโมดูล สมาชิกที่ส่งออกโดยไฟล์โมดูลรูทจะถูกนำเข้าเข้าสู่สถานะเซสชันของผู้เรียก
- Input Type
<รหัส>System.String
- Required
เลขที่
- Value if unset
<รหัส>$null
- Accepts wildcards
-
เลขที่
ค่าต้องเป็นเส้นทางไปยังรายการใดรายการหนึ่งต่อไปนี้:
- สคริปต์ (
.ps1) - โมดูลสคริปต์ (
.psm1) - รายการโมดูล (
.psd1) - แอสเซมบลี (
.dll) - ไฟล์ XML คำจำกัดความ cmdlet (
.cdxml) - เวิร์กโฟลว์ Windows PowerShell 5.1 (
.xaml)
เส้นทางควรสัมพันธ์กับรายการโมดูล
หากรายการโมดูลไม่มีไฟล์รูทถูกกำหนดไว้ในคีย์ RootModule รายการนั้นจะกลายเป็นไฟล์หลักสำหรับโมดูล และโมดูลจะกลายเป็นโมดูลรายการ (ModuleType=Manifest) เมื่อกำหนด RootModule ประเภทของโมดูลจะถูกกำหนดจากนามสกุลไฟล์ที่ใช้:
- ไฟล์
.ps1หรือ.psm1ทำให้โมดูลประเภท Script - ไฟล์
.psd1ทำให้โมดูลเป็นประเภท Manifest - ไฟล์
.dllทำให้โมดูลเป็นประเภท Binary - ไฟล์
.cdxmlทำให้โมดูลเป็นประเภท CIM - ไฟล์
.xamlทำให้โมดูลเป็นประเภท เวิร์กโฟลว์
ตามค่าเริ่มต้น สมาชิกโมดูลทั้งหมดใน RootModule จะถูกส่งออก
คำแนะนำที่เป็นประโยชน์
ความเร็วในการโหลดโมดูลแตกต่างกันระหว่างประเภทโมดูล Binary, Script และ CIM สำหรับข้อมูลเพิ่มเติม โปรดดูข้อควรพิจารณาในการเขียนโมดูล PowerShell
ตัวอย่างเช่น ModuleType ของโมดูลนี้คือ Manifest สมาชิกโมดูลเดียวเท่านั้นที่โมดูลนี้สามารถส่งออกได้คือสมาชิกโมดูลที่กำหนดไว้ในโมดูลที่ระบุด้วยการตั้งค่า NestedModules
@{
RootModule = ''
}
บันทึก
การตั้งค่านี้อาจระบุในรายการโมดูลเป็น ModuleToProcess แม้ว่าชื่อสำหรับการตั้งค่านี้จะถูกต้อง แต่แนวทางปฏิบัติที่ดีที่สุดคือใช้ RootModule แทน
ModuleVersion
การตั้งค่านี้ระบุเวอร์ชันของโมดูล เมื่อมีโมดูลหลายเวอร์ชันบนระบบ เวอร์ชันล่าสุดจะถูกโหลดตามค่าเริ่มต้นเมื่อคุณเรียกใช้ Import-Module
- Input Type
<รหัส>System.String
- Required
ใช่
- Value if unset
None
- Accepts wildcards
เลขที่
ค่าของการตั้งค่านี้จะต้องแปลงเป็น System.Version เมื่อคุณเรียกใช้ Import-Module
ตัวอย่างเช่น รายการนี้จะประกาศเวอร์ชันของโมดูลเป็น '1.2.3'
@{
ModuleVersion = '1.2.3'
}
เมื่อคุณนำเข้าโมดูลและตรวจสอบคุณสมบัติ Version โปรดทราบว่าเป็นอ็อบเจ็กต์ System.Version ไม่ใช่สตริง:
$ExampleModule = Import-Module example.psd1
$ExampleModule.Version
$ExampleModule.Version.GetType().Name
Major Minor Build Revision
----- ----- ----- --------
1 2 3 -1
Version
เข้ากันได้PSEditions
การตั้งค่านี้ระบุ PSEditions ที่เข้ากันได้ของโมดูล
- Input Type
<รหัส>System.String[]
- Accepted Values
เดสก์ท็อป,Core- Required
เลขที่
- Value if unset
<รหัส>$null
- Accepts wildcards
เลขที่
หากค่าของการตั้งค่านี้เป็น $null จะสามารถนำเข้าโมดูลได้โดยไม่คำนึงถึง PSEdition ของเซสชัน คุณสามารถตั้งค่าเป็นค่าที่ยอมรับได้ตั้งแต่หนึ่งค่าขึ้นไป
สำหรับข้อมูลเกี่ยวกับ PSEdition โปรดดู:
- เกี่ยวกับ_PowerShell_Editions
- โมดูลที่มี PowerShell Editions ที่เข้ากันได้
เมื่อกำหนดการตั้งค่านี้ โมดูลจะนำเข้าได้เฉพาะในเซสชันที่รวมค่าของตัวแปรอัตโนมัติ $PSEdition ไว้ในการตั้งค่าเท่านั้น
บันทึก
เนื่องจากตัวแปรอัตโนมัติ $PSEdition ถูกนำมาใช้ในเวอร์ชัน 5.1 Windows PowerShell เวอร์ชันเก่าจึงไม่สามารถโหลดโมดูลที่ใช้การตั้งค่า CompatiblePSEditions ได้
ตัวอย่างเช่น คุณสามารถนำเข้ารายการโมดูลนี้ในเซสชันใดก็ได้:
@{
# CompatiblePSEditions = @()
}
ด้วยการตั้งค่าที่ระบุ โมดูลนี้สามารถนำเข้าเฉพาะในเซสชันที่ค่าของตัวแปรอัตโนมัติ $PSEdition เป็น Core
@{
CompatiblePSEditions = @('Core')
}
แนวทาง
การตั้งค่านี้ระบุตัวระบุเฉพาะสำหรับโมดูล GUID ใช้เพื่อแยกความแตกต่างระหว่างโมดูลที่มีชื่อเดียวกัน
- Input Type
<รหัส>System.String
- Required
เลขที่
- Value if unset
<รหัส>00000000-0000-0000-0000-000000000000
- Accepts wildcards
เลขที่
ค่าของการตั้งค่านี้จะต้องแปลงเป็น System.Guid เมื่อคุณเรียกใช้ Import-Module
คำเตือน
แม้ว่าจะไม่ใช่การตั้งค่าที่จำเป็น แต่การไม่ระบุ GUID ในรายการนั้นไม่มีประโยชน์และอาจทำให้ชื่อขัดแย้งกันสำหรับโมดูล
คุณสามารถสร้างแนวทางใหม่เพื่อใช้ในรายการของคุณได้:
New-Guid | Select-Object -ExpandProperty Guid
8456b025-2fa5-4034-ae47-e6305f3917ca
@{
GUID = '8456b025-2fa5-4034-ae47-e6305f3917ca'
}
หากมีโมดูลอื่นในเครื่องที่มีชื่อเดียวกัน คุณยังคงสามารถนำเข้าโมดูลที่คุณต้องการได้โดยการระบุชื่อแบบเต็มของโมดูล:
Import-Module -FullyQualifiedName @{
ModuleName = 'Example'
GUID = '8456b025-2fa5-4034-ae47-e6305f3917ca'
ModuleVersion = '1.0.0'
}
ผู้เขียน
การตั้งค่านี้ระบุผู้เขียนโมดูล
- Input Type
<รหัส>System.String
- Required
แกลเลอรี PowerShell
- Value if unset
<รหัส>$null
- Accepts wildcards
เลขที่
รายการนี้ประกาศว่าผู้เขียนโมดูลคือทีมประสบการณ์นักพัฒนา Contoso
@{
Author = 'Contoso Developer Experience Team'
}
CompanyName
การตั้งค่านี้ระบุบริษัทหรือผู้จัดจำหน่ายที่สร้างโมดูล
- Input Type
<รหัส>System.String
- Required
เลขที่
- Value if unset
<รหัส>$null
- Accepts wildcards
เลขที่
รายการนี้ประกาศว่าโมดูลถูกสร้างขึ้นโดย Contoso, Ltd.
@{
CompanyName = 'Contoso, Ltd.'
}
ลิขสิทธิ์
การตั้งค่านี้ระบุคำชี้แจงลิขสิทธิ์สำหรับโมดูล
- Input Type
<รหัส>System.String
- Required
เลขที่
- Value if unset
<รหัส>$null
- Accepts wildcards
เลขที่
รายการนี้จะประกาศคำชี้แจงลิขสิทธิ์ที่สงวนสิทธิ์ทั้งหมดให้กับ Contoso, Ltd. ณ ปี 2022
@{
Copyright = '(c) 2022 Contoso, Ltd. All rights reserved.'
}
คำอธิบาย
การตั้งค่านี้อธิบายโมดูลในระดับสูง
- Input Type
<รหัส>System.String
- Required
แกลเลอรี PowerShell
- Value if unset
<รหัส>$null
- Accepts wildcards
เลขที่
รายการนี้มีคำอธิบายสั้นๆ คุณยังสามารถใช้สตริงที่นี่เพื่อเขียนคำอธิบายที่ยาวขึ้นหรือหลายบรรทัดได้
@{
Description = 'Example commands to show a valid module manifest'
}
PowerShellเวอร์ชัน
การตั้งค่านี้ระบุเวอร์ชันขั้นต่ำของ PowerShell ที่โมดูลนี้ต้องการ
- Input Type
<รหัส>System.String
- Required
เลขที่
- Value if unset
<รหัส>$null
- Accepts wildcards
เลขที่
ค่าของการตั้งค่านี้จะต้องแปลงเป็น System.Version เมื่อคุณเรียกใช้ Import-Module
หากไม่ได้ตั้งค่าการตั้งค่านี้ PowerShell จะไม่จำกัดการนำเข้าโมดูลตามเวอร์ชันปัจจุบัน
ตัวอย่างเช่น รายการนี้จะประกาศว่าโมดูลเข้ากันได้กับ PowerShell และ Windows PowerShell ทุกรุ่น
@{
# PowerShellVersion = ''
}
เมื่อตั้งค่า PowerShellVersion เป็น 7.2 คุณจะสามารถนำเข้าโมดูลใน PowerShell 7.2 หรือสูงกว่าได้เท่านั้น
@{
PowerShellVersion = '7.2'
}
PowerShellHostName
การตั้งค่านี้ระบุชื่อของโปรแกรมโฮสต์ PowerShell ที่โมดูลต้องการ เช่น Windows PowerShell ISE Host หรือ ConsoleHost
- Input Type
<รหัส>System.String
- Required
เลขที่
- Value if unset
<รหัส>$null
- Accepts wildcards
เลขที่
คุณสามารถค้นหาชื่อโฮสต์สำหรับเซสชันได้ด้วยคำสั่ง $Host.Name ตัวอย่างเช่น คุณจะเห็นว่าโฮสต์สำหรับเซสชันระยะไกลคือ ServerRemoteHost แทนที่จะเป็น ConsoleHost:
$Host.Name
Enter-PSSession -ComputerName localhost
$Host.Name
ConsoleHost
[localhost]: PS C:\Users\username\Documents> $Host.Name
ServerRemoteHost
โมดูลนี้สามารถนำเข้าสู่โฮสต์ใดก็ได้
@{
# PowerShellHostName = ''
}
เมื่อ PowerShellHostName ตั้งค่าเป็น ServerRemoteHost คุณสามารถนำเข้าโมดูลในเซสชัน PowerShell ระยะไกลเท่านั้น
@{
PowerShellHostName = 'ServerRemoteHost'
}
PowerShellHostVersion
การตั้งค่านี้ระบุเวอร์ชันขั้นต่ำของโปรแกรมโฮสต์ PowerShell ที่โมดูลต้องการ
- Input Type
<รหัส>System.String
- Required
เลขที่
- Value if unset
<รหัส>$null
- Accepts wildcards
เลขที่
ค่าของการตั้งค่านี้จะต้องแปลงเป็น System.Version เมื่อคุณเรียกใช้ Import-Module
คำเตือน
แม้ว่าการตั้งค่านี้สามารถใช้ได้โดยไม่ต้องมีการตั้งค่า PowerShellHostName แต่ก็เพิ่มโอกาสที่จะเกิดพฤติกรรมที่ไม่คาดคิด ใช้การตั้งค่านี้เฉพาะเมื่อคุณใช้การตั้งค่า PowerShellHostName ด้วย
ตัวอย่างเช่น โมดูลของรายการนี้สามารถนำเข้าจากเซสชัน PowerShell ใดๆ ที่ทำงานใน ConsoleHost ไม่ว่าโฮสต์จะเป็นเวอร์ชันใดก็ตาม
@{
PowerShellHostName = 'ConsoleHost'
# PowerShellHostVersion = ''
}
เมื่อตั้งค่า PowerShellHostVersion เป็น 5.1 คุณจะสามารถนำเข้าโมดูลจากเซสชัน PowerShell ใดๆ ที่ทำงานอยู่ใน ConsoleHost โดยที่เวอร์ชันของโฮสต์คือ 5.1 หรือสูงกว่า
@{
PowerShellHostName = 'ConsoleHost'
PowerShellHostVersion = '5.1'
}
DotNetFrameworkเวอร์ชัน
การตั้งค่านี้ระบุเวอร์ชันขั้นต่ำของ Microsoft .NET Framework ที่โมดูลต้องการ
- Input Type
<รหัส>System.String
- Required
เลขที่
- Value if unset
<รหัส>$null
- Accepts wildcards
เลขที่
บันทึก
การตั้งค่านี้ใช้ได้กับรุ่น PowerShell Desktop เท่านั้น เช่น Windows PowerShell 5.1 และใช้ได้กับ .NET Framework เวอร์ชันต่ำกว่า 4.5 เท่านั้น ข้อกำหนดนี้ไม่มีผลกับ PowerShell เวอร์ชันใหม่หรือ .NET Framework
ค่าของการตั้งค่านี้จะต้องแปลงเป็น System.Version เมื่อคุณเรียกใช้ Import-Module
ตัวอย่างเช่น รายการนี้จะประกาศว่าโมดูลสามารถนำเข้าในเซสชัน PowerShell หรือ Windows PowerShell ใดก็ได้ โดยไม่คำนึงถึงเวอร์ชันของ Microsoft .NET Framework
@{
# DotNetFrameworkVersion = ''
}
เมื่อตั้งค่า DotNetFrameworkVersion เป็น 4.0 คุณสามารถนำเข้าโมดูลนี้ในเซสชันใดๆ ของ Windows PowerShell ที่ Microsoft .NET Framework เวอร์ชันล่าสุดที่มีอยู่อย่างน้อย 4.0 คุณยังสามารถนำเข้าข้อมูลดังกล่าวในเซสชัน PowerShell ใดก็ได้
@{
DotNetFrameworkVersion = '4.0'
}
CLRเวอร์ชัน
การตั้งค่านี้ระบุเวอร์ชันขั้นต่ำของ Common Language Runtime (CLR) ของ Microsoft .NET Framework ที่โมดูลต้องการ
- Input Type
<รหัส>System.String
- Required
เลขที่
- Value if unset
<รหัส>$null
- Accepts wildcards
เลขที่
บันทึก
การตั้งค่านี้ใช้ได้กับรุ่น PowerShell Desktop เท่านั้น เช่น Windows PowerShell 5.1 และใช้ได้กับ .NET Framework เวอร์ชันต่ำกว่า 4.5 เท่านั้น ข้อกำหนดนี้ไม่มีผลกับ PowerShell เวอร์ชันใหม่หรือ .NET Framework
ค่าของการตั้งค่านี้จะต้องแปลงเป็น System.Version เมื่อคุณเรียกใช้ Import-Module
ตัวอย่างเช่น รายการนี้จะประกาศว่าโมดูลสามารถนำเข้าในเซสชัน PowerShell หรือ Windows PowerShell ใดก็ได้ โดยไม่คำนึงถึงเวอร์ชันของ CLR ของ Microsoft .NET Framework
@{
# CLRVersion = ''
}
เมื่อตั้งค่า CLRVersion เป็น 4.0 คุณสามารถนำเข้าโมดูลนี้ในเซสชันใดๆ ของ Windows PowerShell โดยที่ CLR เวอร์ชันล่าสุดที่มีอยู่คืออย่างน้อย 4.0 คุณยังสามารถนำเข้าข้อมูลดังกล่าวในเซสชัน PowerShell ใดก็ได้
@{
CLRVersion = '4.0'
}
ProcessorArchitecture
การตั้งค่านี้ระบุสถาปัตยกรรมตัวประมวลผลที่โมดูลต้องการ
- Input Type
<รหัส>System.String
- Accepted Values
<รหัส>ไม่มี,
MSIL,X86,IA64,Amd64,Arm- Required
เลขที่
- Value if unset
<รหัส>ไม่มี
- Accepts wildcards
เลขที่
ค่าของการตั้งค่านี้จะต้องแปลงเป็น System.Reflection.ProcessorArchitecture เมื่อคุณเรียกใช้ Import-Module
ตัวอย่างเช่น รายการนี้จะประกาศว่าโมดูลสามารถนำเข้าในเซสชันใดก็ได้ โดยไม่คำนึงถึงสถาปัตยกรรมตัวประมวลผลของระบบ
@{
# ProcessorArchitecture = ''
}
เมื่อตั้งค่า ProcessorArchitecture เป็น Amd64 คุณจะนำเข้าโมดูลนี้ได้เฉพาะในเซสชันที่ทำงานบนเครื่องที่มีสถาปัตยกรรมที่ตรงกันเท่านั้น
@{
ProcessorArchitecture = 'Amd64'
}
RequiredModules
การตั้งค่านี้ระบุโมดูลที่ต้องอยู่ในสถานะเซสชันสากล หากโมดูลที่จำเป็นไม่อยู่ในสถานะเซสชันส่วนกลาง PowerShell จะนำเข้าโมดูลเหล่านั้น หากไม่มีโมดูลที่จำเป็น คำสั่ง Import-Module จะล้มเหลว
- Input Type
System.String[],System.Collections.Hashtable[]- Required
เลขที่
- Value if unset
<รหัส>$null
- Accepts wildcards
เลขที่
รายการสำหรับการตั้งค่านี้อาจเป็นชื่อโมดูล ข้อมูลจำเพาะของโมดูลแบบเต็ม หรือเส้นทางไปยังไฟล์โมดูล
เมื่อค่าเป็นเส้นทาง เส้นทางสามารถมีคุณสมบัติครบถ้วนหรือสัมพันธ์กันได้
เมื่อค่าเป็นชื่อหรือข้อกำหนดเฉพาะของโมดูล PowerShell จะค้นหา PSModulePath สำหรับโมดูลที่ระบุ
ข้อมูลจำเพาะของโมดูลคือตารางแฮชที่มีคีย์ดังต่อไปนี้
ชื่อโมดูล- จำเป็น ระบุชื่อโมดูลGUID- ไม่บังคับ ระบุ GUID ของโมดูลนอกจากนี้ จำเป็น จะต้องระบุอย่างน้อยหนึ่งในสามคีย์ด้านล่าง คีย์
RequiredVersionไม่สามารถใช้กับคีย์ModuleVersionหรือMaximumVersionคุณสามารถกำหนดช่วงเวอร์ชันที่ยอมรับได้สำหรับโมดูลโดยการระบุคีย์ModuleVersionและMaximumVersionร่วมกันModuleVersion- ระบุเวอร์ชันขั้นต่ำที่ยอมรับได้ของโมดูล
RequiredVersion- ระบุเวอร์ชันที่จำเป็นและแน่นอนของโมดูลMaximumVersion- ระบุเวอร์ชันสูงสุดที่ยอมรับได้ของโมดูล
บันทึก
RequiredVersion ถูกเพิ่มใน Windows PowerShell 5.0 MaximumVersion ถูกเพิ่มใน Windows PowerShell 5.1
ตัวอย่างเช่น รายการนี้จะประกาศว่าโมดูลไม่ต้องใช้โมดูลอื่นใดในการทำงาน
@{
# RequiredModules = @()
}
รายการนี้ประกาศว่าต้องใช้โมดูล PSReadLine เมื่อคุณเรียกใช้ Import-Module บนรายการนี้ PowerShell จะนำเข้า PSReadLine เวอร์ชันล่าสุดที่พร้อมใช้งานในเซสชัน หากไม่มีเวอร์ชัน การนำเข้าจะส่งกลับข้อผิดพลาด
@{
RequiredModules = @(
'PSReadLine'
)
}
คำแนะนำที่เป็นประโยชน์
ใน PowerShell 2.0 นำเข้าโมดูล จะไม่นำเข้าโมดูลที่จำเป็นโดยอัตโนมัติ จะตรวจสอบว่าโมดูลที่จำเป็นอยู่ในสถานะเซสชันสากลเท่านั้น
รายการนี้ประกาศว่าจำเป็นต้องมีเวอร์ชันของโมดูล PSReadLine ที่จำหน่ายในโฟลเดอร์โมดูลของตัวเอง เมื่อคุณเรียกใช้ Import-Module บนรายการนี้ PowerShell จะนำเข้า PSReadLine ที่จำหน่ายจากเส้นทางที่ระบุ
@{
RequiredModules = @(
'Vendored\PSReadLine\PSReadLine.psd1'
)
}
รายการนี้ประกาศว่าจำเป็นต้องใช้โมดูล PSReadLine เวอร์ชัน 2.0.0 โดยเฉพาะ เมื่อคุณเรียกใช้ Import-Module บนรายการนี้ PowerShell จะนำเข้า PSReadLine เวอร์ชัน 2.0.0 หากมีให้ใช้งาน ถ้าไม่พร้อมใช้งาน Import-Module จะส่งกลับข้อผิดพลาด
@{
RequiredModules = @(
@{
ModuleName = 'PSReadLine'
RequiredVersion = '2.0.0'
}
)
}
รายการนี้ประกาศว่าจำเป็นต้องนำเข้าโมดูล PSReadLine เป็นเวอร์ชัน 2.0.0 หรือสูงกว่า
@{
RequiredModules = @(
@{
ModuleName = 'PSReadLine'
ModuleVersion = '2.0.0'
}
)
}
รายการนี้ประกาศว่าจำเป็นต้องนำเข้าโมดูล PSReadLine เป็นเวอร์ชัน 2.0.0 หรือต่ำกว่า
@{
RequiredModules = @(
@{
ModuleName = 'PSReadLine'
MaximumVersion = '2.0.0'
}
)
}
รายการนี้ประกาศว่าจำเป็นต้องนำเข้าโมดูล PSDesiredStateConfiguration ในเวอร์ชันเท่ากับหรือสูงกว่า 2.0.0 แต่ไม่สูงกว่า 2.99.99
@{
RequiredModules = @(
@{
ModuleName = 'PSDesiredStateConfiguration'
ModuleVersion = '2.0.0'
MaximumVersion = '2.99.99'
}
)
}
RequiredAssemblies
การตั้งค่านี้ระบุไฟล์แอสเซมบลี (.dll) ที่โมดูลต้องการ PowerShell โหลดแอสเซมบลีที่ระบุก่อนที่จะอัปเดตประเภทหรือรูปแบบ การนำเข้าโมดูลที่ซ้อนกัน หรือการนำเข้าไฟล์โมดูลที่ระบุไว้ในค่าของคีย์ RootModule
- Input Type
<รหัส>System.String[]
- Required
เลขที่
- Value if unset
<รหัส>$null
- Accepts wildcards
เลขที่
รายการสำหรับการตั้งค่านี้อาจเป็นชื่อไฟล์ของแอสเซมบลีหรือเส้นทางไปยังแอสเซมบลี แสดงรายการแอสเซมบลีที่จำเป็นทั้งหมด แม้ว่าจะแสดงรายการเป็นโมดูลไบนารีในการตั้งค่า NestedModules ก็ตาม
รายการนี้จำเป็นต้องมีแอสเซมบลี example.dll ก่อนที่จะโหลดไฟล์การจัดรูปแบบหรือประเภทใดๆ ที่ระบุในรายการนี้ PowerShell จะโหลด example.dll จากโฟลเดอร์ Assemblies ที่อยู่ในไดเร็กทอรีเดียวกันกับรายการโมดูล
@{
RequiredAssemblies = @(
'Assemblies\Example.dll'
)
}
สคริปต์ถึงกระบวนการ
การตั้งค่านี้จะระบุไฟล์สคริปต์ (.ps1) ที่ทำงานอยู่ในสถานะเซสชันของผู้เรียกเมื่อนำเข้าโมดูล คุณสามารถใช้สคริปต์เหล่านี้เพื่อเตรียมสภาพแวดล้อมได้ เช่นเดียวกับที่คุณใช้สคริปต์เข้าสู่ระบบ
- Input Type
<รหัส>System.String[]
- Required
เลขที่
- Value if unset
<รหัส>$null
- Accepts wildcards
เลขที่
หากต้องการระบุสคริปต์ที่ทำงานในสถานะเซสชันของโมดูล ให้ใช้คีย์ NestedModules
เมื่อคุณนำเข้ารายการนี้ PowerShell จะเรียกใช้ Initialize.ps1 ในเซสชันปัจจุบันของคุณ
@{
ScriptsToProcess = @(
'Scripts\Initialize.ps1'
)
}
ตัวอย่างเช่น หาก Initialize.ps1 เขียนข้อความที่ให้ข้อมูลและตั้งค่าตัวแปร $ExampleState:
if ([string]::IsNullOrEmpty($ExampleState)) {
Write-Information "Example not initialized."
Write-Information "Initializing now..."
$ExampleState = 'Initialized'
} else {
Write-Information "Example already initialized."
}
เมื่อคุณนำเข้าโมดูล สคริปต์จะทำงาน โดยเขียนข้อความเหล่านั้นและตั้งค่า $ExampleState ในเซสชันของคุณ
$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.
ประเภทกระบวนการ
การตั้งค่านี้จะระบุประเภทไฟล์ (.ps1xml) ที่ทำงานเมื่อมีการนำเข้าโมดูล
- Input Type
<รหัส>System.String[]
- Required
เลขที่
- Value if unset
<รหัส>$null
- Accepts wildcards
เลขที่
เมื่อคุณนำเข้าโมดูล PowerShell จะรัน cmdlet Update-TypeData พร้อมกับไฟล์ที่ระบุ เนื่องจากไฟล์ประเภทไม่ได้กำหนดขอบเขต จึงส่งผลต่อสถานะเซสชันทั้งหมดในเซสชัน
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับไฟล์ประเภท โปรดดูที่ about_Types.ps1xml
ตัวอย่างเช่น เมื่อคุณนำเข้ารายการนี้ PowerShell จะโหลดประเภทที่ระบุในไฟล์ Example.ps1xml จากโฟลเดอร์ ประเภท ที่อยู่ในไดเร็กทอรีเดียวกันกับรายการโมดูล
@{
TypesToProcess = @(
'Types\Example.ps1xml'
)
}
รูปแบบเพื่อกระบวนการ
การตั้งค่านี้ระบุไฟล์การจัดรูปแบบ (.ps1xml) ที่ทำงานเมื่อมีการนำเข้าโมดูล
- Input Type
<รหัส>System.String[]
- Required
เลขที่
- Value if unset
<รหัส>$null
- Accepts wildcards
เลขที่
เมื่อคุณนำเข้าโมดูล PowerShell จะเรียกใช้ cmdlet Update-FormatData พร้อมกับไฟล์ที่ระบุ เนื่องจากการจัดรูปแบบไฟล์ไม่ได้จำกัดขอบเขต จึงส่งผลต่อสถานะเซสชันทั้งหมดในเซสชัน
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับประเภทไฟล์ โปรดดูที่ about_Format.ps1xml
ตัวอย่างเช่น เมื่อคุณนำเข้าโมดูลนี้ PowerShell จะโหลดรูปแบบที่ระบุในไฟล์ Example.ps1xml จากโฟลเดอร์ Formats ที่อยู่ในไดเร็กทอรีเดียวกันกับรายการโมดูล
@{
FormatsToProcess = @(
'Formats\Example.ps1xml'
)
}
NestedModules
การตั้งค่านี้ระบุโมดูลสคริปต์ (.psm1) และโมดูลไบนารี (.dll) ที่นำเข้าเข้าสู่สถานะเซสชันของโมดูล คุณยังสามารถระบุไฟล์สคริปต์ (.ps1) ไฟล์ในการตั้งค่านี้ทำงานตามลำดับที่แสดงไว้
- Input Type
System.String[],System.Collections.Hashtable[]- Required
เลขที่
- Value if unset
<รหัส>$null
- Accepts wildcards
เลขที่
รายการสำหรับการตั้งค่านี้อาจเป็นชื่อโมดูล ข้อมูลจำเพาะของโมดูลแบบเต็ม หรือเส้นทางไปยังโมดูลหรือไฟล์สคริปต์
เมื่อค่าเป็นเส้นทาง เส้นทางสามารถมีคุณสมบัติครบถ้วนหรือสัมพันธ์กันได้
เมื่อค่าเป็นชื่อโมดูลหรือข้อกำหนด PowerShell จะค้นหา PSModulePath สำหรับโมดูลที่ระบุ
ข้อมูลจำเพาะของโมดูลคือตารางแฮชที่มีคีย์ดังต่อไปนี้
ชื่อโมดูล- จำเป็น ระบุชื่อโมดูลGUID- ไม่บังคับ ระบุ GUID ของโมดูลนอกจากนี้ จำเป็น จะต้องระบุอย่างน้อยหนึ่งในสามคีย์ด้านล่าง คีย์
RequiredVersionไม่สามารถใช้กับคีย์ModuleVersionหรือMaximumVersionคุณสามารถกำหนดช่วงเวอร์ชันที่ยอมรับได้สำหรับโมดูลโดยการระบุคีย์ModuleVersionและMaximumVersionร่วมกันModuleVersion- ระบุเวอร์ชันขั้นต่ำที่ยอมรับได้ของโมดูล
RequiredVersion- ระบุเวอร์ชันที่จำเป็นและแน่นอนของโมดูลMaximumVersion- ระบุเวอร์ชันสูงสุดที่ยอมรับได้ของโมดูล
บันทึก
RequiredVersion ถูกเพิ่มใน Windows PowerShell 5.0 MaximumVersion ถูกเพิ่มใน Windows PowerShell 5.1
รายการใดๆ ที่จำเป็นต้องส่งออกจากโมดูลที่ซ้อนกันจะต้องถูกส่งออกโดยโมดูลที่ซ้อนกันโดยใช้ Export-ModuleMember cmdlet หรือแสดงอยู่ในคุณสมบัติการส่งออกอย่างใดอย่างหนึ่ง:
- ฟังก์ชันในการส่งออก
- CmdletsToExport
- ตัวแปรที่จะส่งออก
- นามแฝงเพื่อส่งออก
โมดูลที่ซ้อนกันในสถานะเซสชันของโมดูลจะพร้อมใช้งานสำหรับโมดูลรูท แต่จะไม่ส่งคืนโดยคำสั่ง Get-Module ในสถานะเซสชันของผู้เรียก
สคริปต์ (.ps1) ที่อยู่ในการตั้งค่านี้จะทำงานในสถานะเซสชันของโมดูล ไม่ใช่ในสถานะเซสชันของผู้เรียก หากต้องการเรียกใช้สคริปต์ในสถานะเซสชันของผู้เรียก ให้ระบุชื่อไฟล์สคริปต์ในการตั้งค่า ScriptsToProcess
ตัวอย่างเช่น เมื่อคุณนำเข้ารายการนี้ โมดูล Helpers.psm1 จะถูกโหลดเข้าสู่สถานะเซสชันของโมดูลรูท cmdlet ใดๆ ที่ประกาศในโมดูลที่ซ้อนกันจะถูกส่งออก เว้นแต่จะถูกจำกัดเป็นอย่างอื่น
@{
NestedModules = @(
'Helpers\Helpers.psm1'
)
}
ฟังก์ชั่นการส่งออก
การตั้งค่านี้ระบุฟังก์ชันที่โมดูลส่งออก คุณสามารถใช้การตั้งค่านี้เพื่อจำกัดฟังก์ชันที่ส่งออกโดยโมดูล สามารถลบฟังก์ชันออกจากรายการฟังก์ชันที่ส่งออกได้ แต่ไม่สามารถเพิ่มฟังก์ชันลงในรายการได้
- Input Type
<รหัส>System.String[]
- Required
เลขที่
- Value if unset
<รหัส>$null
- Accepts wildcards
ใช่
คุณสามารถระบุรายการในการตั้งค่านี้ด้วยไวด์การ์ด ฟังก์ชันที่ตรงกันทั้งหมดในรายการฟังก์ชันที่ส่งออกจะถูกส่งออก
คำแนะนำที่เป็นประโยชน์
เพื่อประสิทธิภาพและความสามารถในการค้นพบ คุณควรแสดงรายการฟังก์ชันที่คุณต้องการให้โมดูลส่งออกอย่างชัดเจนเสมอในการตั้งค่านี้โดยไม่ต้องใช้ไวด์การ์ดใดๆ
ตัวอย่างเช่น เมื่อคุณนำเข้าโมดูลโดยใส่เครื่องหมายหมายเหตุการตั้งค่าไว้ ฟังก์ชันทั้งหมดในโมดูลรูทและโมดูลที่ซ้อนกันใดๆ จะถูกส่งออก
@{
# FunctionsToExport = @()
}
รายการนี้มีฟังก์ชันการทำงานเหมือนกันกับการไม่ได้ระบุการตั้งค่าเลย
@{
FunctionsToExport = '*'
}
เมื่อตั้งค่า FunctionsToExport เป็นอาร์เรย์ว่าง เมื่อคุณนำเข้าโมดูลนี้ จะไม่มีฟังก์ชันใดที่โมดูลรากหรือการส่งออกโมดูลที่ซ้อนกันใดๆ จะใช้งานได้
@{
FunctionsToExport = @()
}
บันทึก
หากคุณสร้างรายการโมดูลของคุณด้วยคำสั่ง New-ModuleManifest และไม่ได้ระบุพารามิเตอร์ FunctionsToExport รายการที่สร้างขึ้นจะมีการตั้งค่านี้ระบุเป็นอาร์เรย์ว่าง ยกเว้นในกรณีที่คุณแก้ไขรายการ จะไม่มีการส่งออกฟังก์ชันจากโมดูล
เมื่อ FunctionsToExport ตั้งค่าให้รวมเฉพาะฟังก์ชัน Get-Example เมื่อคุณนำเข้าโมดูลนี้ เฉพาะฟังก์ชัน Get-Example เท่านั้นที่จะใช้งานได้ แม้ว่า ฟังก์ชันอื่นๆ ถูกส่งออกโดยโมดูลรูทหรือโมดูลที่ซ้อนกันใดๆ
@{
FunctionsToExport = @(
'Get-Example'
)
}
ด้วยการตั้งค่า FunctionsToExport ด้วยสตริงไวด์การ์ด เมื่อคุณนำเข้าโมดูลนี้ ฟังก์ชั่นใดๆ ที่มีชื่อลงท้ายด้วย ตัวอย่าง จะพร้อมใช้งาน แม้ว่าฟังก์ชันอื่นๆ จะถูกส่งออกเป็นสมาชิกโมดูลโดยรูท โมดูลหรือโมดูลที่ซ้อนกันใด ๆ
@{
FunctionsToExport = @(
'*Example'
)
}
CmdletsToExport
การตั้งค่านี้ระบุ cmdlet ของโมดูลที่ส่งออก คุณสามารถใช้การตั้งค่านี้เพื่อจำกัด cmdlets ที่ส่งออกโดยโมดูล สามารถลบ cmdlets ออกจากรายการสมาชิกโมดูลที่ส่งออกได้ แต่ไม่สามารถเพิ่ม cmdlets ลงในรายการได้
- Input Type
<รหัส>System.String[]
- Required
เลขที่
- Value if unset
<รหัส>$null
- Accepts wildcards
ใช่
คุณสามารถระบุรายการในการตั้งค่านี้ด้วยไวด์การ์ด cmdlet ที่ตรงกันทั้งหมดในรายการ cmdlets ที่ส่งออกจะถูกส่งออก
คำแนะนำที่เป็นประโยชน์
เพื่อประสิทธิภาพและความสามารถในการค้นพบ คุณควรแสดงรายการ cmdlets ที่คุณต้องการให้โมดูลส่งออกอย่างชัดเจนเสมอในการตั้งค่านี้โดยไม่ต้องใช้ไวด์การ์ดใดๆ
ตัวอย่างเช่น เมื่อคุณนำเข้าโมดูลที่มีการตั้งค่านี้ใส่เครื่องหมายความคิดเห็นไว้ cmdlets ทั้งหมดในโมดูลรูทและโมดูลที่ซ้อนกันใดๆ จะถูกส่งออก
@{
# CmdletsToExport = @()
}
รายการนี้มีฟังก์ชันการทำงานเหมือนกันกับการไม่ได้ระบุการตั้งค่าเลย
@{
CmdletsToExport = '*'
}
เมื่อ CmdletsToExport ตั้งค่าเป็นอาร์เรย์ว่าง เมื่อคุณนำเข้าโมดูลนี้ จะไม่มี cmdlets ใดที่โมดูลรูทหรือการส่งออกโมดูลที่ซ้อนกันใดๆ จะพร้อมใช้งาน
@{
CmdletsToExport = @()
}
บันทึก
หากคุณสร้างรายการโมดูลของคุณด้วยคำสั่ง New-ModuleManifest และไม่ได้ระบุพารามิเตอร์ CmdletsToExport รายการที่สร้างขึ้นจะมีการตั้งค่านี้ระบุเป็นอาร์เรย์ว่าง ยกเว้นกรณีที่คุณแก้ไขรายการ จะไม่มีการส่งออก cmdlets จากโมดูล
เมื่อ CmdletsToExport ตั้งค่าให้รวมเฉพาะ Get-Example cmdlet เมื่อคุณนำเข้าโมดูลนี้ เฉพาะ cmdlet Get-Example เท่านั้นที่จะใช้งานได้ แม้ว่า cmdlet อื่นๆ ถูกส่งออกโดยโมดูลรูทหรือโมดูลที่ซ้อนกันใดๆ
@{
CmdletsToExport = @(
'Get-Example'
)
}
ด้วยการตั้งค่า CmdletsToExport ด้วยสตริงตัวแทน เมื่อคุณนำเข้าโมดูลนี้ cmdlet ใดๆ ที่มีชื่อลงท้ายด้วย ตัวอย่าง จะพร้อมใช้งาน แม้ว่า cmdlet อื่นๆ จะถูกส่งออกเป็นสมาชิกโมดูลโดยรูท โมดูลหรือโมดูลที่ซ้อนกันใด ๆ
@{
CmdletsToExport = @(
'*Example'
)
}
ตัวแปรที่จะส่งออก
การตั้งค่านี้ระบุตัวแปรที่โมดูลส่งออก คุณสามารถใช้การตั้งค่านี้เพื่อจำกัดตัวแปรที่ส่งออกโดยโมดูล สามารถลบตัวแปรออกจากรายการสมาชิกโมดูลที่ส่งออกได้ แต่ไม่สามารถเพิ่มตัวแปรลงในรายการได้
- Input Type
<รหัส>System.String[]
- Required
เลขที่
- Value if unset
<รหัส>$null
- Accepts wildcards
ใช่
คุณสามารถระบุรายการในการตั้งค่านี้ด้วยไวด์การ์ด ตัวแปรที่ตรงกันทั้งหมดในรายการสมาชิกโมดูลที่ส่งออกจะถูกส่งออก
คำแนะนำที่เป็นประโยชน์
เพื่อประสิทธิภาพและความสามารถในการค้นพบ คุณควรแสดงรายการตัวแปรที่คุณต้องการให้โมดูลส่งออกอย่างชัดเจนเสมอในการตั้งค่านี้โดยไม่ต้องใช้ไวด์การ์ดใดๆ
ตัวอย่างเช่น เมื่อคุณนำเข้าโมดูลโดยใส่เครื่องหมายความคิดเห็นไว้ ตัวแปรทั้งหมดในโมดูลรูทและโมดูลที่ซ้อนกันใดๆ จะถูกส่งออก
@{
# VariablesToExport = @()
}
รายการนี้มีฟังก์ชันการทำงานเหมือนกันกับการไม่ได้ระบุการตั้งค่าเลย
@{
VariablesToExport = '*'
}
บันทึก
หากคุณสร้างรายการโมดูลของคุณด้วยคำสั่ง New-ModuleManifest และไม่ได้ระบุพารามิเตอร์ VariablesToExport รายการที่สร้างขึ้นจะมีการตั้งค่านี้ระบุเป็น '*'. ยกเว้นในกรณีที่คุณแก้ไขรายการ ตัวแปรทั้งหมดจากโมดูลจะถูกส่งออก
เมื่อตั้งค่า VariablesToExport เป็นอาร์เรย์ว่าง เมื่อคุณนำเข้าโมดูลนี้ จะไม่มีตัวแปรใดที่โมดูลรูทหรือการส่งออกโมดูลที่ซ้อนกันใดๆ จะพร้อมใช้งาน
@{
VariablesToExport = @()
}
เมื่อ VariablesToExport ตั้งค่าให้รวมเฉพาะตัวแปร SomeExample เมื่อคุณนำเข้าโมดูลนี้ จะมีเพียงตัวแปร $SomeExample เท่านั้นที่สามารถใช้งานได้ แม้ว่าตัวแปรอื่น ๆ ส่งออกโดยโมดูลรูทหรือโมดูลที่ซ้อนกันใดๆ
@{
VariablesToExport = @(
'SomeExample'
)
}
ด้วยการตั้งค่า VariablesToExport ด้วยสตริงไวด์การ์ด เมื่อคุณนำเข้าโมดูลนี้ ตัวแปรใดๆ ที่มีชื่อลงท้ายด้วย ตัวอย่าง จะพร้อมใช้งาน แม้ว่าตัวแปรอื่นๆ จะถูกส่งออกเป็นสมาชิกโมดูลโดยรูท โมดูลหรือโมดูลที่ซ้อนกันใด ๆ
@{
VariablesToExport = @(
'*Example'
)
}
DscResourcesToExport
การตั้งค่านี้ระบุทรัพยากร DSC ที่โมดูลส่งออก คุณสามารถใช้การตั้งค่านี้เพื่อจำกัดทรัพยากร DSC ตามคลาสที่ส่งออกโดยโมดูล สามารถลบทรัพยากร DSC ออกจากรายการสมาชิกโมดูลที่ส่งออกได้ แต่ไม่สามารถเพิ่มทรัพยากร DSC ลงในรายการได้
- Input Type
<รหัส>System.String[]
- Required
เลขที่
- Value if unset
<รหัส>$null
- Accepts wildcards
ใช่
คุณสามารถระบุรายการในการตั้งค่านี้ด้วยไวด์การ์ด ทรัพยากร DSC ตามคลาสที่ตรงกันทั้งหมดในโมดูลจะถูกส่งออก
คำแนะนำที่เป็นประโยชน์
เพื่อให้ค้นพบได้ คุณควรแสดงรายการทรัพยากร DSC ทั้งหมดที่โมดูลของคุณส่งออกอย่างชัดเจนเสมอ
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการเขียนและการใช้ทรัพยากร DSC โปรดดูเอกสารประกอบสำหรับ DSC
รายการนี้จะส่งออกทรัพยากร DSC แบบอิงคลาสและแบบ MOF ทั้งหมดที่กำหนดไว้ในโมดูลรูทและโมดูลที่ซ้อนกันใดๆ
@{
# DscResourcesToExport = @()
}
รายการนี้จะส่งออกทรัพยากร DSC ที่ใช้ MOF ทั้งหมดที่กำหนดไว้ในโมดูลรูทและโมดูลที่ซ้อนกันใดๆ แต่จะมีเพียงทรัพยากร DSC ตามคลาสเดียวเท่านั้น ExampleClassResource
@{
DscResourcesToExport = @(
'ExampleClassResource'
)
}
รายการนี้จะส่งออกทรัพยากร DSC ทั้งหมดที่มี แม้ว่าทรัพยากรที่ใช้ MOF จะไม่อยู่ในรายการ โมดูลจะยังคงส่งออก
@{
DscResourcesToExport = @(
'ExampleClassResource'
'ExampleMofResourceFirst'
)
}
ModuleList
การตั้งค่านี้เป็นรายการสินค้าคงคลังที่ให้ข้อมูลของโมดูลที่รวมอยู่ในรายการนี้ รายการนี้ไม่ส่งผลต่อพฤติกรรมของโมดูล
- Input Type
System.String[],System.Collections.Hashtable[]- Required
เลขที่
- Value if unset
<รหัส>$null
- Accepts wildcards
เลขที่
รายการสำหรับการตั้งค่านี้อาจเป็นชื่อโมดูล ข้อมูลจำเพาะของโมดูลแบบเต็ม หรือเส้นทางไปยังโมดูลหรือไฟล์สคริปต์
เมื่อค่าเป็นเส้นทาง เส้นทางสามารถมีคุณสมบัติครบถ้วนหรือสัมพันธ์กันได้
เมื่อค่าเป็นชื่อโมดูลหรือข้อกำหนด PowerShell จะค้นหา PSModulePath สำหรับโมดูลที่ระบุ
ข้อมูลจำเพาะของโมดูลคือตารางแฮชที่มีคีย์ดังต่อไปนี้
ชื่อโมดูล- จำเป็น ระบุชื่อโมดูลGUID- ไม่บังคับ ระบุ GUID ของโมดูลนอกจากนี้ จำเป็น จะต้องระบุอย่างน้อยหนึ่งในสามคีย์ด้านล่าง คีย์
RequiredVersionไม่สามารถใช้กับคีย์ModuleVersionหรือMaximumVersionคุณสามารถกำหนดช่วงเวอร์ชันที่ยอมรับได้สำหรับโมดูลโดยการระบุคีย์ModuleVersionและMaximumVersionร่วมกันModuleVersion- ระบุเวอร์ชันขั้นต่ำที่ยอมรับได้ของโมดูล
RequiredVersion- ระบุเวอร์ชันที่จำเป็นและแน่นอนของโมดูลMaximumVersion- ระบุเวอร์ชันสูงสุดที่ยอมรับได้ของโมดูล
บันทึก
RequiredVersion ถูกเพิ่มใน Windows PowerShell 5.0 MaximumVersion ถูกเพิ่มใน Windows PowerShell 5.1
รายการนี้ไม่ได้ให้รายการข้อมูลของโมดูลที่รวมไว้ อาจมีหรือไม่มีโมดูลก็ได้ แม้ว่าไม่ได้ระบุการตั้งค่านี้ แต่โมดูลใดๆ ที่อยู่ในการตั้งค่า RootModule, ScriptsToProcess หรือ NestedModules ยังคงทำงานตามปกติ
@{
# ModuleList = @()
}
รายการนี้จะประกาศว่าโมดูลเดียวที่รวมไว้คือ Example.psm1 และโมดูลย่อย First.psm1 และ Second.psm1 ใน Submodules โฟลเดอร์
@{
ModuleList = @(
'Example.psm1'
'Submodules\First.psm1'
'Submodules\Second.psm1'
)
}
FileList
การตั้งค่านี้เป็นรายการสินค้าคงคลังที่ให้ข้อมูลของไฟล์ที่รวมอยู่ในโมดูลนี้ รายการนี้ไม่ส่งผลต่อพฤติกรรมของโมดูล
- Input Type
<รหัส>System.String[]
- Required
เลขที่
- Value if unset
<รหัส>$null
- Accepts wildcards
ใช่
รายการสำหรับการตั้งค่านี้ควรเป็นเส้นทางสัมพันธ์ไปยังไฟล์จากโฟลเดอร์ที่มีรายการโมดูล
เมื่อผู้ใช้เรียก Get-Module กับรายการที่มีการตั้งค่านี้กำหนดไว้ คุณสมบัติ FileList จะมีเส้นทางแบบเต็มไปยังไฟล์เหล่านี้ โดยเชื่อมเส้นทางของโมดูลเข้ากับเส้นทางสัมพันธ์ของแต่ละรายการ
ไฟล์ Manifest นี้ไม่รวมรายการไฟล์
@{
# FileList = @()
}
ไฟล์ Manifest นี้ประกาศว่ามีเพียงไฟล์เดียวเท่านั้นที่รวมไว้ในรายการการตั้งค่านี้
@{
FileList = @(
'Example.psd1'
'Example.psm1'
'Assemblies\Example.dll'
'Scripts\Initialize.ps1'
'Submodules\First.psm1'
'Submodules\Second.psm1'
)
}
PrivateData
การตั้งค่านี้จะกำหนดตารางแฮชของข้อมูลที่พร้อมใช้งานสำหรับคำสั่งหรือฟังก์ชันใดๆ ในขอบเขตของโมดูลรูท
- Input Type
<รหัส>System.Collections.Hashtable
- Required
แกลเลอรี PowerShell, Crescendo
- Value if unset
<รหัส>$null
- Accepts wildcards
เลขที่
เมื่อคุณส่งออกรายการ Crescendo เพื่อสร้างโมดูลใหม่ Export-CrescendoModule จะเพิ่มสองคีย์ใน PrivateData
- CrescendoGenerated - การประทับเวลาเมื่อมีการส่งออกโมดูล
- CrescendoVersion - เวอร์ชันของ Crescendo ที่ใช้ในการส่งออกโมดูล
คุณสามารถเพิ่มคีย์ของคุณเองเพื่อเก็บข้อมูลเมตาที่คุณต้องการติดตามได้ คีย์ใดๆ ที่เพิ่มในการตั้งค่านี้จะใช้ได้กับฟังก์ชันและ cmdlets ในโมดูลรูทโดยใช้ $MyInvocation.MyCommand.Module.PrivateData ตารางแฮชไม่พร้อมใช้งานในขอบเขตของโมดูล เฉพาะใน cmdlets ที่คุณกำหนดในโมดูลเท่านั้น
ตัวอย่างเช่น รายการนี้จะกำหนดคีย์ PublishedDate ใน PrivateData
@{
PrivateData = @{
PublishedDate = '2022-06-01'
}
}
Cmdlet ในโมดูลสามารถเข้าถึงค่านี้ได้ด้วยตัวแปร $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"
}
}
เมื่อนำเข้าโมดูลแล้ว ฟังก์ชันจะใช้ค่าจาก PrivateData เพื่อกำหนดว่าโมดูลจะเผยแพร่เมื่อใด
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
คุณสมบัติย่อย PSData กำหนดตารางแฮชของค่าที่รองรับสถานการณ์ส่วนขยายเฉพาะ
- Input Type
<รหัส>System.Collections.Hashtable
- Required
แกลเลอรี PowerShell คุณลักษณะการทดลอง โมดูล Crescendo
- Value if unset
<รหัส>$null
- Accepts wildcards
เลขที่
คุณสมบัติย่อย PSData ใช้สำหรับสถานการณ์ต่อไปนี้:
- แกลเลอรี PowerShell - เมื่อคุณสร้างรายการโมดูลโดยใช้
New-ModuleManifestcmdlet จะเติมข้อมูลแฮช PSData ล่วงหน้าด้วยคีย์ตัวยึดตำแหน่งที่จำเป็นเมื่อเผยแพร่โมดูลไปยัง PowerShell Gallery สำหรับข้อมูลเพิ่มเติมเกี่ยวกับรายการโมดูลและการเผยแพร่ไปยังแกลเลอรี PowerShell โปรดดูค่ารายการแพ็คเกจที่ส่งผลกระทบต่อ UI แกลเลอรี PowerShell - คุณลักษณะทดลอง - ข้อมูลเมตาเกี่ยวกับคุณลักษณะทดลองจะถูกเก็บไว้ในคุณสมบัติ ExperimentalFeatures ของ PSData คุณสมบัติ ExperimentalFeatures คืออาร์เรย์ของแฮชเทเบิลที่มีชื่อและคำอธิบายของคุณสมบัติ สำหรับข้อมูลเพิ่มเติม โปรดดูการประกาศคุณลักษณะทดลองในโมดูล
- โมดูล Crescendo - เมื่อคุณส่งออกรายการ Crescendo เพื่อสร้างโมดูลใหม่
Export-CrescendoModuleจะเพิ่มค่าCrescendoBuiltให้กับคุณสมบัติ PSData.Tags คุณสามารถใช้แท็กนี้เพื่อค้นหาโมดูลในแกลเลอรี PowerShell ที่สร้างขึ้นโดยใช้ Crescendo สำหรับข้อมูลเพิ่มเติม โปรดดูที่ Export-CrescendoModule
ช่วยเหลือInfoURI
การตั้งค่านี้ระบุที่อยู่อินเทอร์เน็ตของไฟล์ HelpInfo XML สำหรับโมดูล
- Input Type
<รหัส>System.String
- Required
เลขที่
- Value if unset
<รหัส>$null
- Accepts wildcards
เลขที่
ค่าของการตั้งค่านี้ต้องเป็น Uniform Resource Identifier (URI) ที่ขึ้นต้นด้วย http หรือ https
ไฟล์ HelpInfo XML รองรับคุณลักษณะวิธีใช้ที่สามารถอัปเดตได้ซึ่งถูกนำมาใช้ใน PowerShell 3.0 ประกอบด้วยข้อมูลเกี่ยวกับตำแหน่งของไฟล์วิธีใช้ที่ดาวน์โหลดได้สำหรับโมดูลและหมายเลขเวอร์ชันของไฟล์วิธีใช้ใหม่ล่าสุดสำหรับแต่ละสถานที่ที่รองรับ
สำหรับข้อมูลเกี่ยวกับวิธีใช้ที่สามารถอัปเดตได้ โปรดดู about_Updatable_Help สำหรับข้อมูลเกี่ยวกับไฟล์ HelpInfo XML โปรดดูที่การสนับสนุนวิธีใช้ที่อัปเดตได้
ตัวอย่างเช่น โมดูลนี้รองรับวิธีใช้ที่อัปเดตได้
@{
HelpInfoUri = 'http://https://go.microsoft.com/fwlink/?LinkID=603'
}
DefaultCommandPrefix
การตั้งค่านี้ระบุคำนำหน้าคำนามของคำสั่งทั้งหมดในโมดูลเมื่อนำเข้าสู่เซสชัน คำนำหน้าช่วยป้องกันความขัดแย้งของชื่อคำสั่งในเซสชันของผู้ใช้
- Input Type
<รหัส>System.String
- Required
เลขที่
- Value if unset
<รหัส>$null
- Accepts wildcards
เลขที่
ผู้ใช้โมดูลสามารถแทนที่คำนำหน้านี้ได้โดยการระบุพารามิเตอร์ คำนำหน้า ของ Import-Module cmdlet
การตั้งค่านี้ถูกนำมาใช้ใน PowerShell 3.0
เมื่อนำเข้ารายการนี้ cmdlet ใดๆ ที่นำเข้าจากโมดูลนี้จะมี ตัวอย่าง นำหน้าคำนามในชื่อ ตัวอย่างเช่น Get-Item จะถูกนำเข้าเป็น Get-ExampleItem
@{
DefaultCommandPrefix = 'Example'
}
ดูเพิ่มเติม
- เกี่ยวกับ_PowerShell_Editions
- New-ModuleManifest
- Test-ModuleManifest
- โมดูลที่มี PowerShell Editions ที่เข้ากันได้
- ค่ารายการแพ็คเกจที่ส่งผลกระทบต่อ PowerShell Gallery UI
- ข้อควรพิจารณาในการเขียนโมดูล PowerShell