โรงเรียน 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 หรือเพียงแค่แสดงความคิดเห็น.