/ / Geek School: เรียนรู้วิธีการทำให้ Windows เป็นอัตโนมัติด้วย PowerShell

โรงเรียน Geek: เรียนรู้วิธีการทำให้ Windows เป็นอัตโนมัติด้วย PowerShell

ใน Geek School รุ่นนี้เราจะช่วยให้คุณเข้าใจภาษาสคริปต์ PowerShell ที่ทรงพลังซึ่งสร้างขึ้นใน Windows และมีประโยชน์อย่างมากที่จะรู้ในสภาพแวดล้อมไอที

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

บทนำ

PowerShell เป็นเครื่องมืออัตโนมัติที่ทรงพลังที่สุดที่ Microsoft มีให้ทั้งตัวเชลล์และภาษาสคริปต์

โปรดทราบว่าซีรี่ส์นี้ใช้ PowerShell 3 ซึ่งมาพร้อมกับ Windows 8 และ Server 2012 หากคุณใช้ Windows 7 โปรดดาวน์โหลดการอัปเดต PowerShell 3 ก่อนดำเนินการต่อ

พบกับคอนโซลและ ISE

การโต้ตอบกับ PowerShell มีสองวิธีออกจากกล่องคอนโซลและสภาพแวดล้อมการเขียนสคริปต์รวม - หรือที่เรียกว่า ISE ISE ได้รับการปรับปรุงอย่างมากมายจากเวอร์ชั่นน่าเกลียดที่มาพร้อมกับ PowerShell 2 และสามารถเปิดได้โดยการกดแป้นพิมพ์ Win + R เพื่อเปิดกล่องวิ่งจากนั้นพิมพ์ powershell_ise และกด enter

ภาพ

อย่างที่คุณเห็น ISE sports เป็นมุมมองแบบแยกคุณสามารถสคริปต์ได้อย่างรวดเร็วในขณะที่ยังสามารถเห็นผลลัพธ์ในครึ่งล่างของ ISE ครึ่งล่างของ ISE ที่พิมพ์ผลลัพธ์ของสคริปต์ของคุณสามารถใช้เป็นพรอมต์ REPL ได้เช่นเดียวกับพร้อมรับคำสั่ง ในที่สุด v3 ISE ได้เพิ่มการรองรับ Intellisense ในบานหน้าต่างสคริปต์และคอนโซลแบบโต้ตอบ

ภาพ

ภาพ

หรือคุณสามารถโต้ตอบกับ PowerShellใช้ PowerShell Console ซึ่งเป็นสิ่งที่ฉันจะใช้กับซีรี่ส์นี้เป็นส่วนใหญ่ PowerShell Console ทำงานเหมือนกับพรอมต์คำสั่ง - คุณเพียงแค่ป้อนคำสั่งและแยกผลลัพธ์ออกมา หากต้องการเปิดคอนโซล Windows PowerShell ให้กดชุดแป้นพิมพ์ Win + R อีกครั้งเพื่อเปิดกล่องเรียกใช้แล้วพิมพ์ PowerShell จากนั้นกด Enter

ภาพ

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

ภาพ

ภาพ

การใช้ระบบช่วยเหลือ

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

ปรับปรุงช่วยเหลือ

ภาพ

ภาพ

ขอแสดงความยินดีในการใช้ PowerShell แรกของคุณคำสั่ง! ความจริงก็คือคำสั่ง Update-Help มีตัวเลือกมากมายมากกว่าเพียงแค่เรียกใช้และเพื่อดูพวกเราจะต้องการดูความช่วยเหลือสำหรับคำสั่ง ในการดูวิธีใช้สำหรับคำสั่งคุณเพียงส่งชื่อของคำสั่งที่คุณต้องการความช่วยเหลือไปยังพารามิเตอร์ชื่อของคำสั่ง Get-Help ตัวอย่างเช่น:

รับความช่วยเหลือ - ปรับปรุงชื่อ - ช่วยเหลือ

ภาพ

คุณอาจสงสัยว่าจะตีความทั้งหมดได้อย่างไรข้อความนั้นต่อไปฉันหมายถึงเหตุใดจึงมีข้อมูลสองจำนวนมากภายใต้ส่วนไวยากรณ์และทำไมจึงมีวงเล็บมากมายทั่วทุกที่ สิ่งแรกสิ่งแรก: เหตุผลที่มีข้อมูลสองบล็อกภายใต้หัวข้อไวยากรณ์เนื่องจากพวกเขาเป็นตัวแทนของวิธีต่างๆในการเรียกใช้คำสั่ง เทคนิคเหล่านี้เรียกว่าชุดพารามิเตอร์และคุณสามารถใช้งานได้ทีละชุดเท่านั้น (คุณไม่สามารถผสมพารามิเตอร์จากชุดที่แตกต่างกันได้) ในภาพหน้าจอด้านบนคุณจะเห็นว่าชุดพารามิเตอร์ด้านบนมีพารามิเตอร์ SourcePath ในขณะที่ด้านล่างไม่ สาเหตุที่คุณจะใช้ชุดพารามิเตอร์ด้านบน (ชุดที่มี SourcePath) หากคุณอัปเดตไฟล์ช่วยเหลือจากเครื่องอื่นในเครือข่ายของคุณที่ดาวน์โหลดมาแล้วในขณะที่คุณไม่จำเป็นต้องระบุเส้นทางที่มาหากคุณ แค่อยากจะคว้าไฟล์ล่าสุดจาก Microsoft

เพื่อตอบคำถามที่สองมีไวยากรณ์บางอย่างที่ช่วยให้ไฟล์ติดตามและนี่คือ:

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

ในขณะที่คุณควรเรียนรู้การอ่านไฟล์ช่วยเหลือไวยากรณ์ถ้าคุณไม่แน่ใจเกี่ยวกับพารามิเตอร์เฉพาะเพียงผนวก - เต็มไปที่ท้ายคำสั่ง get help ของคุณและเลื่อนลงไปที่ส่วนพารามิเตอร์ซึ่งมันจะบอกคุณเพิ่มเติมเกี่ยวกับแต่ละพารามิเตอร์

รับ - ช่วยเหลือ - ปรับปรุงชื่อ - ช่วยเหลือ - เต็ม

ภาพ

สิ่งสุดท้ายที่คุณต้องรู้เกี่ยวกับความช่วยเหลือระบบเป็นวิธีที่คุณสามารถใช้เพื่อค้นหาคำสั่งซึ่งจริง ๆ แล้วเป็นเรื่องง่ายมาก คุณเห็นแล้วว่า PowerShell รับสัญลักษณ์แทนได้เกือบทุกที่ดังนั้นเมื่อใช้พร้อมกับคำสั่ง Get-Help ช่วยให้คุณค้นหาคำสั่งได้อย่างง่ายดาย ตัวอย่างเช่นฉันกำลังมองหาคำสั่งที่จัดการกับบริการ Windows:

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

ภาพ

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

ความปลอดภัย

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

รูปแบบการป้องกันขั้นพื้นฐานที่สุดมาจากความจริงที่ว่าส่วนขยายไฟล์ PS1 (ส่วนขยายที่ใช้เพื่อแสดงสคริปต์ PowerShell) ไม่ได้ลงทะเบียนกับโฮสต์ PowerShell ซึ่งลงทะเบียนจริงด้วย Notepad นั่นหมายความว่าถ้าคุณดับเบิลคลิกที่ไฟล์มันจะเปิดด้วย notepad แทนการทำงาน

ประการที่สองคุณไม่สามารถเรียกใช้สคริปต์จากเชลล์ได้เพียงพิมพ์ชื่อสคริปต์คุณต้องระบุเส้นทางแบบเต็มไปยังสคริปต์ ดังนั้นหากคุณต้องการเรียกใช้สคริปต์ในไดรฟ์ C ของคุณคุณจะต้องพิมพ์:

C: runme.ps1

หรือถ้าคุณอยู่ที่รูทของไดรฟ์ C คุณสามารถใช้สิ่งต่อไปนี้:

.runme.ps1

ในที่สุด PowerShell ก็มีสิ่งที่เรียกว่านโยบายการดำเนินการซึ่งห้ามไม่ให้คุณเรียกใช้สคริปต์เก่า ๆ โดยค่าเริ่มต้นคุณไม่สามารถเรียกใช้สคริปต์ใด ๆ และจำเป็นต้องเปลี่ยนนโยบายการดำเนินการหากคุณต้องการให้เรียกใช้งานได้ มี 4 นโยบายการดำเนินการที่โดดเด่น:

  • จำกัด: นี่คือการกำหนดค่าเริ่มต้นใน PowerShell การตั้งค่านี้หมายความว่าไม่มีสคริปต์ใดสามารถทำงานได้โดยไม่คำนึงถึงลายเซ็นของมัน สิ่งเดียวที่สามารถเรียกใช้ใน PowerShell ด้วยการตั้งค่านี้เป็นคำสั่งเฉพาะ
  • AllSigned: การตั้งค่านี้อนุญาตให้สคริปต์ทำงานได้PowerShell สคริปต์ต้องมีลายเซ็นดิจิทัลที่เกี่ยวข้องจากผู้เผยแพร่ที่เชื่อถือได้ จะมีพรอมต์ก่อนที่คุณจะเรียกใช้สคริปต์จากผู้เผยแพร่ที่เชื่อถือได้
  • RemoteSigned: การตั้งค่านี้อนุญาตให้เรียกใช้สคริปต์ได้ แต่ต้องการให้สคริปต์และไฟล์การกำหนดค่าที่ดาวน์โหลดจากอินเทอร์เน็ตมีลายเซ็นดิจิทัลที่เกี่ยวข้องจากผู้เผยแพร่ที่เชื่อถือได้ สคริปต์ที่เรียกใช้จากเครื่องคอมพิวเตอร์ไม่จำเป็นต้องลงชื่อ ไม่มีพรอมต์ก่อนเรียกใช้สคริปต์
  • ไม่ จำกัด: สิ่งนี้อนุญาตให้สคริปต์ที่ไม่ได้ลงชื่อทำงานรวมถึงสคริปต์และไฟล์การกำหนดค่าทั้งหมดที่ดาวน์โหลดจากอินเทอร์เน็ต ซึ่งจะรวมถึงไฟล์จาก Outlook และ Messenger ความเสี่ยงที่นี่กำลังเรียกใช้สคริปต์โดยไม่มีลายเซ็นหรือความปลอดภัย เราแนะนำว่าคุณไม่เคยตั้งค่านี้ให้กับเรา

หากต้องการดูว่านโยบายการดำเนินการปัจจุบันของคุณมีการตั้งค่าให้เปิด PowerShell Console และประเภท:

Get-ExecutionPolicy

ภาพ

สำหรับหลักสูตรนี้และสถานการณ์อื่น ๆ ส่วนใหญ่นโยบาย RemoteSigned นั้นดีที่สุดดังนั้นไปข้างหน้าและเปลี่ยนนโยบายของคุณโดยใช้สิ่งต่อไปนี้

หมายเหตุ: สิ่งนี้จะต้องทำจาก PowerShell Console ที่ยกระดับ

ตั้งค่า ExecutionPolicy RemoteSigned

ภาพ

สำหรับทุกคนในเวลานี้พบกันใหม่พรุ่งนี้สำหรับ PowerShell ที่สนุกสนาน


คำเตือน: คำที่เหมาะสมสำหรับคำสั่ง PowerShell เป็น cmdlet และจากนี้ไปเราจะใช้คำศัพท์ที่ถูกต้องนี้ รู้สึกว่าเหมาะสมกว่าที่จะเรียกคำสั่งเหล่านี้สำหรับการแนะนำนี้


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