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

การขยาย PowerShell ด้วยชุดคุณสมบัติแบบกำหนดเอง


หากคุณติดตามบล็อกเมื่อเร็วๆ นี้ คุณได้อ่านเกี่ยวกับการใช้ส่วนขยายประเภท PowerShell ของฉันแล้ว นี่เป็นวิธีเพิ่มคุณสมบัติใหม่ให้กับสิ่งที่ฉันใช้ตลอดเวลา เป้าหมายคือการประหยัดการพิมพ์และรับสิ่งที่ฉันต้องการโดยใช้ความพยายามเพียงเล็กน้อย คุณยังสามารถก้าวไปอีกขั้นด้วยการสร้างชุดคุณสมบัติของคุณเอง

คุณอาจไม่รู้ แต่ PowerShell ใช้ชุดคุณสมบัติอยู่แล้ว นี่คือตัวอย่างที่คุณสามารถลองด้วยตัวเอง

ไหนว่ามาจากไหน? ไปป์รับกระบวนการเพื่อรับสมาชิกและดูด้วยตัวคุณเอง

ชุดคุณสมบัติเป็นวิธีทางลัดในการเลือกชุดย่อยของคุณสมบัติ คุณยังสามารถกำหนดชุดคุณสมบัติได้ ลองใช้ส่วนขยาย Hyper-V ของฉันที่อนุญาตให้ฉันเรียกใช้คำสั่งดังนี้:

ฉันอาจอยากเห็นคุณสมบัติกลุ่มนี้บ่อยๆ แต่เห็นได้ชัดว่าฉันไม่ต้องการพิมพ์สิ่งนี้ตลอดเวลา คุณสามารถกำหนดชุดคุณสมบัติใหม่ได้ด้วย Update-TypeData cmdlet แต่จะต้องใช้ความพยายามเพิ่มขึ้นอีกเล็กน้อย น่าเสียดายที่ไม่มีพารามิเตอร์ที่ใช้งานง่าย คุณต้องสร้างไฟล์ ps1xml แทนดังนี้:

<?xml version="1.0" encoding="utf-8" ?>
<Types>
   <Type>
        <Name>Microsoft.HyperV.PowerShell.VirtualMachine</Name>
         <Members>
            <PropertySet>
                <Name>PSConfig</Name>
                <ReferencedProperties>
                    <Name>VMName</Name>
                    <Name>State</Name>
                    <Name>DynamicMemoryEnabled</Name>
                    <Name>DiskPath</Name>
                    <Name>TestVHD</Name>
                    <Name>ConfigurationFile</Name>
                </ReferencedProperties>
            </PropertySet>
        </Members>
    </Type>
</Types>

หวังว่านี่ไม่น่าจะอ่านยากเกินไป ฉันกำลังกำหนดสมาชิกชุดคุณสมบัติสำหรับประเภท VirtualMachine ด้วยชื่อ PSConfig ชุดคุณสมบัตินี้จะใช้ชื่อคุณสมบัติที่อ้างอิง คุณสามารถเพิ่มคำจำกัดความสำหรับประเภทอื่นๆ ในไฟล์ XML เดียวกันได้ แต่ฉันไม่ได้เป็นเช่นนั้น ฉันจึงตั้งชื่อไฟล์นี้ว่า MyHyperV.types.ps1xml ชื่อไม่สำคัญจริงๆ แต่รูปแบบคือการใช้ types.ps1xml เป็นส่วนหนึ่งของชื่อไฟล์

หากต้องการโหลดไฟล์นี้ ฉันเพิ่มบรรทัดนี้ลงในสคริปต์โปรไฟล์ PowerShell ของฉัน

Update-TypeData -AppendPath c:\scripts\MyHyperV.types.ps1xml

ฉันไม่ได้กำหนดสิ่งใดที่ขัดแย้งกับคำจำกัดความแบบสำเร็จรูป ดังนั้นจึงไม่สำคัญว่าฉันจะเติมหน้าหรือต่อท้าย ตอนนี้ชีวิตของฉันง่ายขึ้นมาก

ฉันสามารถเห็นคำจำกัดความใหม่ด้วย Get-Member

XML อาจดูน่ากังวลเล็กน้อยในตอนแรก แต่เมื่อคุณมีโครงร่างแล้ว ก็ควรเป็นเรื่องง่ายในการตัดและวาง อย่าลืมดูแท็กและเคสของคุณ

สิ่งนี้ดูเหมือนสิ่งที่คุณต้องการใช้หรือไม่?

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