ทดสอบ ModuleManifest (Microsoft.PowerShell.Core)
Test-ModuleManifest
- โมดูล :
- Microsoft.PowerShell.Core
ตรวจสอบว่าไฟล์รายการโมดูลอธิบายเนื้อหาของโมดูลได้อย่างถูกต้อง
ไวยากรณ์
Test-ModuleManifest
[-Path] <String>
[<CommonParameters>]คำอธิบาย
Test-ModuleManifest cmdlet ตรวจสอบว่าไฟล์ที่แสดงอยู่ในไฟล์รายการโมดูล (.psd1) จริงๆ แล้วอยู่ในเส้นทางที่ระบุ
cmdlet นี้ได้รับการออกแบบมาเพื่อช่วยให้ผู้เขียนโมดูลทดสอบไฟล์รายการของตน ผู้ใช้โมดูลยังสามารถใช้ cmdlet นี้ในสคริปต์และคำสั่งเพื่อตรวจหาข้อผิดพลาดก่อนที่จะเรียกใช้สคริปต์ที่ขึ้นอยู่กับโมดูล
Test-ModuleManifest ส่งกลับวัตถุที่แสดงถึงโมดูล นี่เป็นวัตถุประเภทเดียวกับที่ Get-Module ส่งคืน หากไฟล์ใดไม่อยู่ในตำแหน่งที่ระบุในรายการ cmdlet จะสร้างข้อผิดพลาดสำหรับไฟล์แต่ละไฟล์ที่หายไปด้วย
ตัวอย่าง
ตัวอย่างที่ 1: ทดสอบรายการ
Test-ModuleManifest -Path "$pshome\Modules\TestModule.psd1"คำสั่งนี้จะทดสอบรายการโมดูล TestModule.psd1
ตัวอย่างที่ 2: ทดสอบรายการโดยใช้ไปป์ไลน์
"$pshome\Modules\TestModule.psd1" | test-modulemanifest
Test-ModuleManifest : The specified type data file 'C:\Windows\System32\Wi
ndowsPowerShell\v1.0\Modules\TestModule\TestTypes.ps1xml' could not be processed because the file was not found. Please correct the path and try again.
At line:1 char:34
+ "$pshome\Modules\TestModule.psd1" | test-modulemanifest <<<<
+ CategoryInfo : ResourceUnavailable: (C:\Windows\System32\WindowsPowerShell\v1.0\Modules\TestModule\TestTypes.ps1xml:String) [Test-ModuleManifest], FileNotFoundException
+ FullyQualifiedErrorId : Modules_TypeDataFileNotFound,Microsoft.PowerShell.Commands.TestModuleManifestCommandName
Name : TestModule
Path : C:\Windows\system32\WindowsPowerShell\v1.0\Modules\TestModule\TestModule.psd1
Description :
Guid : 6f0f1387-cd25-4902-b7b4-22cff6aefa7b
Version : 1.0
ModuleBase : C:\Windows\system32\WindowsPowerShell\v1.0\Modules\TestModule
ModuleType : Manifest
PrivateData :
AccessMode : ReadWrite
ExportedAliases : {}
ExportedCmdlets : {}
ExportedFunctions : {}
ExportedVariables : {}
NestedModules : {}
คำสั่งนี้ใช้ตัวดำเนินการไปป์ไลน์ (|) เพื่อส่งสตริงเส้นทางไปยัง Test-ModuleManifest
เอาต์พุตคำสั่งแสดงว่าการทดสอบล้มเหลว เนื่องจากไม่พบไฟล์ TestTypes.ps1xml ซึ่งแสดงอยู่ในรายการ
ตัวอย่างที่ 3: เขียนฟังก์ชันเพื่อทดสอบรายการโมดูล
function Test-ManifestBool ($path)
{$a = dir $path | Test-ModuleManifest -ErrorAction SilentlyContinue; $?}ฟังก์ชันนี้เหมือนกับ Test-ModuleManifest แต่จะส่งกลับค่าบูลีน ฟังก์ชันจะส่งกลับ $True หากรายการผ่านการทดสอบและ $False มิฉะนั้น
ฟังก์ชันใช้ Get-ChildItem cmdlet นามแฝง=dir เพื่อรับรายการโมดูลที่ระบุโดยตัวแปร $path คำสั่งใช้ตัวดำเนินการไปป์ไลน์ (|) เพื่อส่งวัตถุไฟล์ไปที่ Test-ModuleManifest
Test-ModuleManifest ใช้พารามิเตอร์ทั่วไป ErrorAction ที่มีค่า SilentlyContinue เพื่อระงับการแสดงข้อผิดพลาดใดๆ ที่คำสั่งสร้างขึ้น นอกจากนี้ยังบันทึกอ็อบเจ็กต์ PSModuleInfo ที่ Test-ModuleManifest ส่งคืนในตัวแปร $a ดังนั้นวัตถุจึงไม่แสดง
จากนั้น ในคำสั่งแยกต่างหาก ฟังก์ชันจะแสดงค่าของตัวแปรอัตโนมัติ $? หากคำสั่งก่อนหน้าไม่สร้างข้อผิดพลาด คำสั่งจะแสดง $True และ $False มิฉะนั้น
คุณสามารถใช้ฟังก์ชันนี้ในคำสั่งแบบมีเงื่อนไข เช่น คำสั่งที่อาจนำหน้าคำสั่ง Import-Module หรือคำสั่งที่ใช้โมดูล
พารามิเตอร์
-Path
ระบุเส้นทางและชื่อไฟล์สำหรับไฟล์รายการ ป้อนเส้นทางและชื่อของไฟล์รายการโมดูลที่มีนามสกุลไฟล์ .psd1 ตำแหน่งเริ่มต้นคือไดเร็กทอรีปัจจุบัน รองรับอักขระตัวแทน แต่ต้องแปลงเป็นไฟล์รายการโมดูลเดียว จำเป็นต้องมีพารามิเตอร์นี้ คุณยังสามารถไพพ์พาธไปยัง Test-ModuleManifest ได้ด้วย
- พิมพ์ :
String
- ตำแหน่ง:
0
- ค่าเริ่มต้น:
-
None
- ที่จำเป็น:
True
- ยอมรับอินพุตไปป์ไลน์:
True
- ยอมรับอักขระตัวแทน:
True
อินพุต
สตริง
คุณสามารถไปป์เส้นทางไปยังรายการโมดูลไปยัง cmdlet นี้
เอาท์พุต
PSModuleInfo
cmdlet นี้ส่งกลับวัตถุ PSModuleInfo ที่แสดงถึงโมดูล มันจะส่งคืนวัตถุนี้แม้ว่ารายการจะมีข้อผิดพลาดก็ตาม