โฮมเพจ » ทำอย่างไร » โรงเรียน Geek เขียนสคริปต์ PowerShell แบบเต็มของคุณเป็นครั้งแรก

    โรงเรียน Geek เขียนสคริปต์ PowerShell แบบเต็มของคุณเป็นครั้งแรก

    ไม่กี่สัปดาห์ที่ผ่านมา The Geek แสดงให้คุณเห็นว่าคุณสามารถใช้พรอมต์คำสั่งเพื่อค้นหาว่าเมื่อใดที่คอมพิวเตอร์ของคุณเริ่มทำงานครั้งสุดท้าย ในการติดตั้งครั้งสุดท้ายนี้ของ Geek School สำหรับ PowerShell เราจะเขียนคำสั่ง PowerShell ที่ใช้ซ้ำได้เพื่อทำสิ่งเดียวกัน.

    อย่าลืมอ่านบทความก่อนหน้าในซีรีย์:

    • เรียนรู้วิธีอัตโนมัติของ Windows ด้วย PowerShell
    • เรียนรู้การใช้ Cmdlets ใน PowerShell
    • เรียนรู้วิธีใช้วัตถุใน PowerShell
    • การเรียนรู้การจัดรูปแบบการกรองและการเปรียบเทียบใน PowerShell
    • เรียนรู้การใช้ Remoting ใน PowerShell
    • การใช้ PowerShell เพื่อรับข้อมูลคอมพิวเตอร์
    • การทำงานกับคอลเล็กชันใน PowerShell
    • เรียนรู้วิธีใช้งานใน PowerShell
    • เรียนรู้วิธีขยาย PowerShell
    • การเรียนรู้ตัวแปร PowerShell อินพุตและเอาต์พุต

    เขียนบทแรกของคุณ

    สิ่งแรกที่เราต้องทำคือหาวิธีเข้าถึงข้อมูลที่เราต้องการ เนื่องจากเรากำลังจัดการกับข้อมูลการจัดการเราอาจต้องดูการใช้ WMI ซึ่งมีคลาสที่ชื่อว่า Win32_OperatingSystem ซึ่งช่วยให้คุณสามารถดูข้อมูล verbose เกี่ยวกับระบบปฏิบัติการของคุณรวมถึงครั้งสุดท้ายที่มันเริ่มทำงาน.

    ดังนั้นตอนนี้เรารู้ว่าเราสามารถหาข้อมูลที่เราค้นหาเปิด ISE และพิมพ์ต่อไปนี้.

    Get-WmiObject -Class Win32_OperatingSystem -ComputerName localhost |

    เลือกวัตถุ - คุณสมบัติ CSName, LastBootUpTime

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

    ตอนนี้คลิกที่ปุ่ม "เรียกใช้สคริปต์" สีเขียวหรือกดปุ่ม F5 บนแป้นพิมพ์ของคุณเพื่อทดสอบรหัส.

    เวลา WMI อาจเป็นความลับเล็กน้อย โดยที่เราหมายถึงถ้าคุณดูคุณสมบัติ LastBootUpTime มันบอกว่า 2013-03-19 เวลา 18:26:21 แต่ด้วยเหตุผลบางอย่างที่ WMI คนตัดสินใจเชื่อมต่อทั้งหมดนั้นไว้ในสตริงเดียว โชคดีสำหรับเราเราไม่ต้องกังวลกับการวิเคราะห์สตริงด้วยตนเองเนื่องจากมีวิธีที่ง่ายกว่าในการทำแม้ว่าจะสูงกว่า คุณจะต้องเปลี่ยนส่วน Select-Object ของรหัสเพื่อให้มีลักษณะดังนี้:

    เลือกวัตถุ -Property CSName, @ n =” Last Booted”;

    E = [Management.ManagementDateTimeConverter] :: ToDateTime ($ _. LastBootUpTime)

    สิ่งที่เรากำลังทำที่นี่คือการสร้างคุณสมบัติที่กำหนดเองที่เรียกว่า“ Last Booted” และระบุว่าค่าของมันจะต้องเป็นผลมาจากการเรียกวิธีการแบบคงที่ ToDateTime บนคุณสมบัติ LastBootUpTime ของวัตถุไปป์ไลน์ปัจจุบัน ตอนนี้รหัสของคุณควรเป็นแบบนี้.

    การรันโค้ดตอนนี้จะให้เวลาบู๊ตสุดท้ายที่อ่านได้.

    ตอนนี้เรามีความสุขกับการทำงานขั้นพื้นฐานของสคริปต์ของเราแล้วเราต้องบันทึกไว้ เพื่อความง่ายขอบันทึกไว้ดังต่อไปนี้:

    C: \ รับ LastBootTime.ps1

    ตอนนี้เปลี่ยนเป็นครึ่งล่างของ ISE แล้วเรียกใช้สิ่งต่อไปนี้:

    C: \ รับ LastBootTime.ps1

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

    พระราม (
    [สตริง] $ คอมพิวเตอร์
    )

    จากนั้นแทนที่ค่า hardcoded localhost ด้วยตัวแปร $ ComputerName สคริปต์ของคุณควรมีลักษณะดังนี้:

    บันทึกสคริปต์ของคุณจากนั้นกลับไปที่ครึ่งล่างของ ISE และดูวิธีใช้สำหรับสคริปต์ของคุณ.

    ช่วย C: \ Get-LastBootTime.ps1

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

    [Parameter (บังคับ = $ จริง)] [สตริง] $ คอมพิวเตอร์

    สำหรับการสร้างไฟล์ช่วยเหลือที่ดีกว่าวิธีที่พบมากที่สุดคือการใช้วิธีใช้ตามความคิดเห็น นั่นหมายความว่าเราเพียงเพิ่มความคิดเห็นยาวพิเศษที่ด้านบนสุดของสคริปต์.

    <#
    .สรุป
    แสดงเมื่อพีซีของคุณเริ่มทำงานครั้งสุดท้าย.
    .รายละเอียด
    นี่คือฟังก์ชั่น WMI wrapper เพื่อให้ได้เวลาที่พีซีของคุณเริ่มทำงานครั้งล่าสุด.
    .ชื่อพารามิเตอร์คอมพิวเตอร์
    ชื่อของคอมพิวเตอร์ที่คุณต้องการเรียกใช้คำสั่ง.
    .ตัวอย่าง
    Get-LastBootTime -ComputerName localhost
    .LINK
    www.howtogeek.com
    #>

    เมื่อทำเสร็จแล้วคุณควรลงท้ายด้วยสคริปต์ที่มีลักษณะเช่นนี้.

    ตอนนี้ไปกันเถอะลองดูไฟล์ช่วยเหลือใหม่ของเรา.

    อ่าดูดีมาก! ตอนนี้สคริปต์ของเราเสร็จสมบูรณ์แล้วเรามีสิ่งสุดท้ายที่ต้องทำ: ทดสอบ สำหรับสิ่งนี้ฉันจะออกจาก ISE และมุ่งหน้ากลับไปที่ PowerShell console เพื่อให้แน่ใจว่าไม่มีสิ่งผิดปกติ.

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