โฮมเพจ » ทำอย่างไร » โรงเรียน Geek เรียนรู้วิธีการทำให้ 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 มีตัวเลือกมากมายมากกว่าเพียงแค่เรียกใช้และเพื่อดูพวกเราจะต้องการดูความช่วยเหลือสำหรับคำสั่ง ในการดูวิธีใช้สำหรับคำสั่งคุณเพียงส่งชื่อของคำสั่งที่คุณต้องการความช่วยเหลือไปยังพารามิเตอร์ Name ของคำสั่ง Get-Help ตัวอย่างเช่น:

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

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

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

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

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

    รับความช่วยเหลือชื่อการปรับปรุงความช่วยเหลือแบบเต็ม

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

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

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

    ความปลอดภัย

    นี่จะไม่เป็นการแนะนำที่เหมาะสมโดยไม่ต้องพูดถึงความปลอดภัย ความกังวลที่ใหญ่ที่สุดสำหรับทีม 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 หรือเพียงแค่แสดงความคิดเห็น.