ค้นหาเว็บไซต์

ข้อควรพิจารณาในการเขียนโมดูล PowerShell


เอกสารนี้ประกอบด้วยแนวทางบางประการที่เกี่ยวข้องกับวิธีการเขียนโมดูลเพื่อประสิทธิภาพที่ดีที่สุด

การเขียนรายการโมดูล

รายการโมดูลที่ไม่ได้ใช้แนวทางต่อไปนี้อาจมีผลกระทบที่เห็นได้ชัดเจนต่อประสิทธิภาพการทำงานของ PowerShell ทั่วไป แม้ว่าจะไม่ได้ใช้โมดูลในเซสชันก็ตาม

การค้นหาอัตโนมัติของคำสั่งจะวิเคราะห์แต่ละโมดูลเพื่อกำหนดว่าคำสั่งใดที่โมดูลจะเอ็กซ์พอร์ต และการวิเคราะห์นี้อาจมีราคาแพง ผลลัพธ์ของการวิเคราะห์โมดูลจะถูกแคชต่อผู้ใช้ แต่แคชจะไม่พร้อมใช้งานเมื่อเรียกใช้ครั้งแรก ซึ่งเป็นสถานการณ์ทั่วไปสำหรับคอนเทนเนอร์ ในระหว่างการวิเคราะห์โมดูล หากคำสั่งที่ส่งออกสามารถกำหนดได้อย่างสมบูรณ์จากรายการ ก็สามารถหลีกเลี่ยงการวิเคราะห์โมดูลที่มีราคาแพงกว่าได้

แนวทาง

  • ในรายการโมดูล อย่าใช้ไวด์การ์ดในรายการ AliasesToExport, CmdletsToExport และ FunctionsToExport

  • หากโมดูลไม่ส่งออกคำสั่งประเภทใดประเภทหนึ่ง ให้ระบุสิ่งนี้อย่างชัดเจนในรายการโดยระบุ @() รายการหายไปหรือ $null เทียบเท่ากับการระบุไวด์การ์ด *

ควรหลีกเลี่ยงสิ่งต่อไปนี้หากเป็นไปได้:

@{
    FunctionsToExport = '*'

    # Also avoid omitting an entry, it's equivalent to using a wildcard
    # CmdletsToExport = '*'
    # AliasesToExport = '*'
}

ให้ใช้:

@{
    FunctionsToExport = 'Format-Hex', 'Format-Octal'
    CmdletsToExport = @()  # Specify an empty array, not $null
    AliasesToExport = @()  # Also ensure all three entries are present
}

หลีกเลี่ยง CDXML

เมื่อตัดสินใจว่าจะใช้โมดูลของคุณอย่างไร มีตัวเลือกหลักสามตัวเลือก:

  • ไบนารี่ (ปกติคือ C#)
  • สคริปต์ (PowerShell)
  • CDXML (CIM การห่อไฟล์ XML)

หากความเร็วในการโหลดโมดูลของคุณมีความสำคัญ CDXML จะมีลำดับความสำคัญช้ากว่าโมดูลไบนารีโดยประมาณ

โมดูลไบนารี่โหลดเร็วที่สุดเนื่องจากมีการคอมไพล์ล่วงหน้าและสามารถใช้ NGen เพื่อคอมไพล์ JIT ได้หนึ่งครั้งต่อเครื่อง

โดยทั่วไปโมดูลสคริปต์จะโหลดช้ากว่าโมดูลไบนารีเล็กน้อยเนื่องจาก PowerShell จะต้องแยกวิเคราะห์สคริปต์ก่อนที่จะคอมไพล์และดำเนินการ

โดยทั่วไปโมดูล CDXML จะช้ากว่าโมดูลสคริปต์มาก เนื่องจากจะต้องแยกวิเคราะห์ไฟล์ XML ก่อน จากนั้นจึงสร้างสคริปต์ PowerShell ขึ้นมาเล็กน้อย จากนั้นจึงแยกวิเคราะห์และคอมไพล์

บทความที่เกี่ยวข้อง