โฮมเพจ » ทำอย่างไร » โรงเรียน Geek การเรียนรู้วิธีการใช้วัตถุใน PowerShell

    โรงเรียน Geek การเรียนรู้วิธีการใช้วัตถุใน PowerShell

    การทำความเข้าใจวัตถุเป็นหนึ่งในแนวคิดพื้นฐานในการ "รับ" PowerShell เข้าร่วมกับเราเมื่อเราสำรวจวัตถุและวิธีที่พวกเขาทำให้ PowerShell ดีขึ้นกว่าที่อื่น ๆ ในทุกวันนี้.

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

    • เรียนรู้วิธีอัตโนมัติของ Windows ด้วย PowerShell
    • เรียนรู้การใช้ Cmdlets ใน PowerShell

    และคอยติดตามตลอดซีรีย์ที่เหลือตลอดทั้งสัปดาห์.

    วัตถุ

    คุณเคยสงสัยหรือไม่ว่าอะไรที่ทำให้ PowerShell แตกต่างจากเชลล์ Linux แบบดั้งเดิมเช่น Bash หรือแม้แต่พรอมต์คำสั่งดั้งเดิม? คำตอบนั้นง่ายมาก: ข้อความเอาต์พุตของเชลล์แบบดั้งเดิมซึ่งทำให้การจัดรูปแบบและการกรองทำได้ยาก แน่นอนว่ามีเครื่องมือที่จะช่วยให้คุณทำงานเสร็จ (ใจเย็น ๆ และ grep เข้ามาในใจ) แต่ในตอนท้ายของวันหากคุณต้องการแยกวิเคราะห์ข้อความหนัก ๆ คุณจำเป็นต้องรู้สำนวนปกติเช่น หลังมือของคุณ.

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

    วัตถุใน. Net นั้นเหมือนกันมากยกเว้นความแตกต่างเล็กน้อยสองอย่าง: เรียกว่า "ส่วน" คุณสมบัติ และเรียกว่า "คำแนะนำ" วิธีการ. หากเราต้องการแสดงบริการ Windows เป็นวัตถุเราอาจตัดสินใจว่าเหมาะสมที่จะอธิบายโดยใช้คุณสมบัติสามประการ: ชื่อบริการรัฐและคำอธิบาย นอกจากนี้เรายังจำเป็นต้องมีปฏิสัมพันธ์กับบริการดังนั้นเราอาจให้วัตถุเป็นวิธีเริ่มหยุดและหยุดชั่วคราว.

    คุณสามารถดูคุณสมบัติและวิธีการของวัตถุโดยส่งผ่านไปยัง cmdlet รับสมาชิก วัตถุที่เอาต์พุต PowerShell cmdlet เป็นชนิดพื้นฐานส่วนใหญ่จาก. Net framework แต่คุณสามารถสร้างวัตถุของคุณเองหากคุณต้องการใช้ภาษาเช่น C # หรือใช้ประเภท PSObject.

    ไปป์ไลน์

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

    รับบริการ | ได้รับการบริการสมาชิก

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

    System.ServiceProcess.ServiceController

    เนื่องจาก PowerShell จัดการกับวัตถุและไม่ใช่ข้อความจึงไม่สามารถเชื่อมโยง cmdlet ทั้งหมดเข้าด้วยกันโดยใช้ไปป์ไลน์ [1] นั่นหมายความว่าเราต้องค้นหา cmdlet ที่ต้องการรับวัตถุ System.ServiceProcess.ServiceController จากไปป์ไลน์.

    Get-Command -ParameterType System.ServiceProcess.ServiceController

    ขอให้สังเกตว่ามี cmdlet ที่เรียกว่าหยุดบริการ ลองดูที่ความช่วยเหลือสำหรับมัน.

    รับความช่วยเหลือ - ชื่อหยุดบริการ

    ดูเหมือนว่าพารามิเตอร์ InputObject ใช้อาร์เรย์ของวัตถุ ServiceController เป็นอินพุต โดยปกติถ้าคุณเห็นพารามิเตอร์ชื่อ InputObject มันจะรับอินพุตจาก Pipeline แต่เพียงเพื่อให้แน่ใจว่าลองมาดูวิธีใช้แบบเต็มสำหรับพารามิเตอร์นั้น.

    รับความช่วยเหลือ - ชื่อหยุดบริการ - เต็ม

    ความสงสัยของเรานั้นถูกต้อง ดังนั้น ณ จุดนี้เรารู้ดังต่อไปนี้:

    • Get-Service ส่งคืนออบเจ็กต์ ServiceController
    • Stop-Service มีพารามิเตอร์ชื่อ InputObject ที่ยอมรับ ServiceControllers หนึ่งรายการขึ้นไปเป็นอินพุต.
    • พารามิเตอร์ InputObject ยอมรับอินพุตไปป์ไลน์.

    การใช้ข้อมูลนี้เราสามารถทำสิ่งต่อไปนี้:

    รับบริการ - ชื่อ 'อุปกรณ์พกพา Apple' | หยุดบริการ

    นั่นคือทั้งหมดที่ในเวลานี้คน ครั้งต่อไปเราจะดูว่าเราสามารถจัดรูปแบบกรองและเปรียบเทียบวัตถุใน Pipeline ได้อย่างไร.

    การบ้าน

    • อ่านข้อมูลบน Object Pipeline

    หากคุณมีคำถามใด ๆ คุณสามารถทวีตฉัน @taybgibb หรือเพียงแค่แสดงความคิดเห็น.