โรงเรียน 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 ครั้งต่อไป.