บทช่วยสอน Powershell สำหรับผู้เริ่มต้น
⚡ สรุปอย่างชาญฉลาด
PowerShell Scripting คือเครื่องมืออัตโนมัติเชิงวัตถุที่สร้างขึ้นบนเฟรมเวิร์ก .NET มันรวมเอา cmdlet สคริปต์ และภาษาสคริปต์เข้าด้วยกันเพื่อช่วยให้ผู้ดูแลระบบไอทีทำงานอัตโนมัติได้ดียิ่งขึ้น Windowsจัดการบริการ และเชื่อมต่อเครื่องระยะไกลจากบรรทัดคำสั่งเดียว

PowerShell คืออะไร
Windows PowerShell เป็นเอนจินการทำงานอัตโนมัติเชิงวัตถุ���ละภาษาสคริปต์ ออกแบบมาสำหรับผู้เชี่ยวชาญด้านไอทีและผู้ดูแลระบบที่ต้องการควบคุมและทำให้การบริหารจัดการเป็นไปโดยอัตโนมัติ Windows และแอปพลิเคชันอื่นๆ PowerShell ขยายแนวคิดที่ได้เรียนรู้ใน Windows พรอมต์คำสั่งและ Windows Script Host มาพร้อมกับอ็อบเจ็กต์ใหม่ คำสั่ง cmdlet และไปป์ไลน์อันทรงพลัง
PowerShell ผสานรวมความยืดหยุ่นของการเขียนสคริปต์ ความเร็วของบรรทัดคำสั่ง และความลึกซึ้งของเครื่องมือบริหารจัดการแบบ GUI เข้าด้วยกัน ด้วย PowerShell ผู้ดูแลระบบสามารถแก้ไขปัญหาได้อย่างมีประสิทธิภาพและลดเวลาการทำงานด้วยตนเองได้หลายชั่วโมง บทแนะนำนี้จะพาคุณไปเรียนรู้สิ่งสำคัญที่คุณต้องรู้เพื่อเรียนรู้ PowerShell ตั้งแต่เริ่มต้น
เหตุใดจึงต้องใช้ PowerShell?
เหตุผลสำคัญที่สุดในการใช้ PowerShell คือ:
- นำเสนอประสบการณ์การใช้งานบรรทัดคำสั่งที่ผสานรวมเข้ากับระบบปฏิบัติการเป็นอย่างดี
- ให้สิทธิ์การเข้าถึงประเภทข้อมูลทุกประเภทในเฟรมเวิร์ก .NET อย่างสมบูรณ์
- ได้รับความไว้วางใจจากผู้ดูแลระบบในองค์กรต่างๆ
- ช่วยให้คุณสามารถควบคุมส่วนประกอบของเซิร์ฟเวอร์และเวิร์กสเตชันได้ด้วยโค้ดเพียงไม่กี่บรรทัด
- ออกแบบมาสำหรับผู้ดูแลระบบโดยเฉพาะ ด้วยไวยากรณ์คำกริยา-คำนามที่กระชับและเข้าใจง่าย
- ปลอดภัยกว่าการวิ่ง วีบีสคริปต์ หรือภาษาสคริปต์รุ่นเก่าอื่นๆ
ประวัติ PowerShell
PowerShell 1.0 เปิดตัวครั้งแรกในปี 2006 ปัจจุบัน PowerShell มีเวอร์ชัน 7.2 และสูงกว่านั้นแล้ว ความสามารถและสภาพแวดล้อมการใช้งานของ PowerShell ก็เติบโตขึ้นอย่างมากเมื่อมีการออกเวอร์ชันใหม่
ประวัติความเป็นมาของ PowerShell แยกตามเวอร์ชัน:
- PowerShell 1.0 — สนับสนุนการบริหารงานท้องถิ่นของ Windows เซิร์ฟเวอร์ 2003
- PowerShell 2.0 — ผสานรวมเข้ากับ Windows 7 และ Windows เซิร์ฟเวอร์ 2008 R2 เพิ่มฟังก์ชันการทำงานแบบรีโมท การทำธุรกรรม งานเบื้องหลัง เหตุการณ์ และการดีบัก
- PowerShell 3.0 — จัดส่งพร้อม Windows 8 และ Windows เซิร์ฟเวอร์ 2012 เป็นส่วนหนึ่งของ Windows กรอบการบริหารจัดการ เพิ่มฟังก์ชันการทำงานตามกำหนดเวลา การเชื่อมต่อเซสชัน และการโหลดโมดูลอัตโนมัติ
- PowerShell 4.0 — จัดส่งพร้อม Windows 8.1 และ Windows เซิร์ฟเวอร์ 2012 R2 เพิ่มฟังก์ชันการกำหนดค่าสถานะที่ต้องการ (Desired State Configuration), การดีบักที่ได้รับการปรับปรุง และการวินิจฉัยเครือข่าย
- PowerShell 5.0 — ส่วนหนึ่งของ Windows Management Framework 5 เพิ่มการดีบักระยะไกล การกำหนดคลาส และการแจงนับ .NET
- PowerShell 7.2 — พัฒนาบน .NET 6.0 เพิ่มตัวดำเนินการใหม่ มุมมองข้อผิดพลาดแบบไดนามิก และการแจ้งเตือนเวอร์ชันอัตโนมัติ
คุณสมบัติของ PowerShell
- การเข้าถึงระยะไกลด้วย PowerShell: เรียกใช้สคริปต์และคำสั่ง cmdlet บนเครื่องระยะไกล
- งานเบื้องหลัง: เรียกใช้สคริปต์หรือไปป์ไลน์แบบอะซิงโครนัสบนเครื่องโลคัลหรือเครื่องระยะไกลหลายเครื่อง
- การทำธุรกรรม: อนุญาตให้ cmdlet และนักพัฒนาสามารถดำเนินการแบบกลุ่มที่สามารถยืนยันหรือยกเลิกได้พร้อมกัน
- อีเวนติ้ง: รับฟัง ส่งต่อ และดำเนินการตามเหตุการณ์ด้านการจัดการและระบบ
- การถ่ายโอนไฟล์ผ่านเครือข่าย: รองรับการถ่ายโอนไฟล์แบบอะซิงโครนัสที่มีลำดับความสำคัญและจำกัดความเร็วระหว่างเครื่องต่างๆ ผ่านบริการถ่ายโอนอัจฉริยะเบื้องหลัง (BITS)
วิธีการเรียกใช้ PowerShell
PowerShell ถูกติดตั้งไว้ล่วงหน้าในทุกเวอร์ชันล่าสุดของ Windowsเริ่มใช้งานโดยทำตามขั้นตอนต่อไปนี้
ขั้นตอน 1) ค้นหา PowerShell ใน Windowsจากนั้นเลือกและคลิก
ขั้นตอน 2) หน้าต่าง PowerShell เปิดขึ้น
Cmdlet กับคำสั่ง
A ซม cmdlet (อ่านว่า “คอมมานด์-เล็ต”) คือคำสั่งขนาดเล็กที่ใช้ในสภาพแวดล้อม PowerShell PowerShell จะเรียกใช้ cmdlet ที่พรอมต์ และคุณสามารถสร้าง cmdlet ของคุณเองได้โดยใช้ API ของ PowerShell cmdlet แตกต่างจากคำสั่งเชลล์แบบดั้งเดิมในประเด็นต่อไปนี้:
- Cmdlet คือ NET Framework ที่ อ็อบเจ็กต์คลาส ไม่สามารถเรียกใช้งานในฐานะไฟล์ปฏิบัติการแบบเดี่ยวๆ ได้
- สามารถเขียน Cmdlet ได้โดยใช้โค้ดเพียงไม่กี่บรรทัด
- การแยกวิเคราะห์ การจัดรูปแบบผลลัพธ์ และการแสดงข้อผิดพลาดนั้น ดำเนินการโดยระบบรันไทม์ ไม่ใช่โดยคำสั่ง cmdlet เอง
- Cmdlet ทำงานกับอ็อบเจ็กต์ ดังนั้นทั้งสตรีมข้อความและอ็อบเจ็กต์จึงสามารถไหลผ่านไปป์ไลน์ได้
- Cmdlet เป็นระบบที่ประมวลผลข้อมูลทีละรายการเท่านั้น
ฟังก์ชันส่วนใหญ่ของ PowerShell นั้นใช้งานผ่าน cmdlet ซึ่งใช้รูปแบบการตั้งชื่อแบบคำกริยา-คำนาม (เอกพจน์เสมอ) cmdlet จะส่งคืนอ็อบเจ็กต์ ไม่ใช่ข้อความ ต้นฉบับ — ซึ่งแตกต่างจาก cmdlet — คือชุดคำสั่งที่จัดเก็บไว้ในไฟล์ข้อความ .ps1 การขยาย.
คำกริยาทั่วไปที่คุณจะใช้ในการเรียนรู้ PowerShell ได้แก่:
- เข้ามา — ดึงข้อมูลบางอย่างออกมา
- เริ่มต้น — ดำเนินการบางอย่าง
- ออก — แสดงผลลัพธ์บางอย่าง
- หยุด — หยุดสิ่งที่กำลังทำงานอยู่
- ชุด — กำหนดความหมายของบางสิ่งบางอย่าง
- ใหม่ — สร้างสรรค์สิ่งใหม่
คำสั่ง PowerShell ที่สำคัญ
ขอความช่วยเหลือ: ดูวิธีใช้งานคำสั่งและหัวข้อต่างๆ ของ PowerShell ได้ที่นี่
ตัวอ���่าง: แสดงวิธีใช้งานสำหรับ Format-Table คำสั่ง
Get-Help Format-Table
รับคำสั่ง: รับข้อมูลเกี่ยวกับสิ่งใดก็ตามที่สามารถเรียกใช้งานได้
ตัวอย่าง: สร้างรายการของ cmdlet และฟังก์ชันที่ติดตั้งบนเครื่อง
Get-Command
รับบริการ: ค้นหาบริการทั้งหมดในเครื่อง
ตัวอย่าง: ดึงข้อมูลบริการทั้งหมดที่มีชื่อขึ้นต้นด้วย “vm”
Get-Service "vm*"
สมัครสมาชิก: แสดงให้เห็นว่าสามารถทำอะไรได้บ้างกับวัตถุชิ้นหนึ่ง
ตัวอย่าง: แสดงรายการสมาชิกของบริการ VM ที่ได้จากคำสั่ง Get-Service
Get-Service "vm*" | Get-Member
คำสั่ง cmdlet อื่นๆ ที่มีประโยชน์:
Get-Module— แสดงแพ็กเกจคำสั่งที่ติดตั้งไว้Get-Content— อ่านไฟล์และประมวลผลเนื้อหาของไฟล์นั้นGet-*ตัวอักษรตัวแทน — แสดงรายการคำสั่ง cmdlet ทุกคำสั่งที่ขึ้นต้นด้วย “Get-“
ตัวอย่าง: สร้างโฟลเดอร์
New-Item -Path 'X:\Guru99' -ItemType Directory
Output:
ประเภทข้อมูลของ PowerShell
PowerShell รองรับชนิดข้อมูลมาตรฐานของ .NET ดังนั้นคุณจึงสามารถจัดเก็บค่าใดๆ ลงในตัวแปรได้อย่างเป็นระเบียบ
ตัวแปรพิเศษ
PowerShell มีตัวแปรพิเศษในตัวอยู่หลายตัว ตัวแปรที่ใช้งานได้สะดวกที่สุดมีดังต่อไปนี้
| ตัวแปรพิเศษ | Descriptไอออน |
|---|---|
| $ข้อผิดพลาด | อาร์เรย์ของอ็อบเจ็กต์ข้อผิดพลาดที่แสดงถึงข้อผิดพลาดล่าสุด |
| $โฮสต์ | แสดงชื่อของแอปพลิเคชันโฮสติ้งปัจจุบัน |
| $โปรไฟล์ | บันทึกเส้นทางแบบเต็มของโปรไฟล์ผู้ใช้สำหรับเชลล์เริ่มต้น |
| $พีไอดี | จัดเก็บตัวระบุของกระบวนการ |
| $PSUICวัฒนธรรม | เป็นตัวแทนของวัฒนธรรม UI ในปัจจุบัน |
| $NULL | ประกอบด้วยค่าว่างหรือค่า null |
| $เท็จ | ประกอบด้วยค่าบูลีน FALSE |
| $จริง | ประกอบด้วยค่าบูลีน TRUE |
สคริปต์ PowerShell
สคริปต์ PowerShell ถูกจัดเก็บไว้ใน .ps1 โดยค่าเริ่มต้น คุณไม่สามารถเรียกใช้สคริปต์โดยการดับเบิ้ลคลิกได้ — กลไกป้องกันนี้มีไว้เพื่อปกป้องระบบจากความเสียหายโดยไม่ตั้งใจ หากต้องการเรียกใช้สคริปต์ ให้คลิกขวาที่สคริปต์แล้วเลือก “เรียกใช้ด้วย PowerShell”.
นโยบายการดำเนินการจะควบคุมว่าสคริปต์ใดบ้างที่ได้รับอนุญาตให้ทำงาน ดูนโยบายปัจจุบันได้ที่ Get-ExecutionPolicyค่าที่เป็นไปได้ ได้แก่:
- จำกัด — ไม่อนุญาตให้ใช้สคริปต์ใดๆ นี่คือค่าเริ่มต้น
- ลงนามทั้งหมด — เฉพาะสคริปต์ที่ลงนามโดยนักพัฒนาที่เชื่อถือได้เท่านั้นที่จะทำงานได้ และแต่ละสคริปต์ต้องมีการยืนยัน
- RemoteSigned — สคริปต์ที่คุณสร้างเองจะทำงาน รวมถึงสคริปต์ที่ลงนามแล้วจากแหล่งที่เชื่อถือได้
- ไม่ จำกัด — สามารถเรียกใช้สคริปต์ใดก็ได้ (แต่ควรใช้เท่าที่จำเป็น)
ขั้นตอนในการเปลี่ยนนโยบายการดำเนินการ:
ขั้นตอน 1) เปิดพรอมต์ PowerShell ในโหมดผู้ดูแลระบบโดยคลิกขวาที่ PowerShell แล้วเลือก Run as administrator.
ขั้นตอน 2) เรียกใช้คำสั่งด้านล่างนี้
Get-ExecutionPolicySet-ExecutionPolicy Unrestricted- เข้าสู่
Yเมื่อมีข้อความแจ้งให้ยืนยัน Get-ExecutionPolicy
สคริปต์ PowerShell แรก
เปิดโปรแกรม Notepad แล้วพิมพ์:
Write-Host "Hello, Guru99!"
บันทึกไฟล์ด้วย .ps1 ส่วนขยาย — ตัวอย่างเช่น FirstScript.ps1.
ใน PowerShell ให้รันสคริปต์ด้วยคำสั่ง:
& "X:\FirstScript.ps1"
PowerShell ISE คืออะไร
การขอ Windows สภาพแวดล้อมการเขียนสคริปต์แบบบูรณาการของ PowerShell (ISE) ISE คือโปรแกรมแก้ไขข้อความเริ่มต้นสำหรับ PowerShell ใน ISE คุณสามารถเรียกใช้คำสั่ง เขียนการทดสอบ และดีบักสคริปต์ในสภาพแวดล้อมแบบกราฟิกที่ใช้หน้าต่าง รองรับการแก้ไขหลายบรรทัด การเน้นไวยากรณ์ การเติมข้อความอัตโนมัติ การเรียกใช้แบบเลือก และอื่นๆ อีกมากมาย
PowerShell ISE ยังมีหน้าต่างคอนโซลที่ใช้รันคำสั่งโดยตรง ในขณะที่หน้าต่างด้านข้างจะแสดงซอร์สโค้ดของสคริปต์และเครื่องมือต่างๆ ที่เชื่อมต่อกับ ISE คุณสามารถเปิดหน้าต่างสคริปต์หลายหน้าต่างพร้อมกันได้ ซึ่งมีประโยชน์เมื่อทำการดีบักสคริปต์ที่ขึ้นอยู่กับฟังก์ชันที่กำหนดไว้ในสคริปต์หรือโมดูลอื่นๆ
สร้างสคริปต์เดิมขึ้นมาใหม่ใน ISE:
- วางโค้ดลงในตัวแก้ไข
- บันทึกสคริปต์
- กด F5 เพื่อเรียกใช้งาน
- สังเกตผลลัพธ์ในช่องคอนโซล
ตัวอย่างที่ 2: สคริปต์ต่อไปนี้แสดงค่าว่าง หน่วยค��ามจำเสมือน บนเครื่องจักร
Get-WmiObject -Class Win32_OperatingSystem -ComputerName localhost |
Select-Object -Property CSName, FreeVirtualMemory
PowerShell Concepts
แนวคิดต่อไปนี้เป็นคำศัพท์พื้นฐานที่ใช้ในงาน PowerShell ในชีวิตประจำวัน
| แนวคิด | Descriptไอออน |
|---|---|
| ซม | คำสั่งพื้นฐานที่เขียนด้วยภาษา .NET เช่น VB หรือ C# นักพัฒนาสามารถขยายชุดคำสั่งได้โดยการโหลดหรือเขียนส่วนเสริม PowerShell เพิ่มเติม |
| ฟังก์ชั่น | คำสั่งที่เขียนด้วยภาษา PowerShell เอง โดยไม่จำเป็นต้องใช้ IDE เช่น Visual Studio. |
| สคริปต์ | ไฟล์ข้อความบนดิสก์พร้อมกับ .ps1 การขยาย. |
| การใช้งาน | ที่มีอยู่ Windows โปรแกรมที่เรียกใช้จากเชลล์ |
| อะไรจะเกิดขึ้น | สั่งให้ cmdlet ไม่ต้องทำงาน แต่ให้บรรยายสิ่งที่จะเกิดขึ้นหากมันทำงานแทน |
| ยืนยัน | สั่งให้ cmdlet แจ้งเตือนก่อนดำเนินการ |
| ละเอียด | ให้รายละเอียดการดำเนินงานในระดับที่สูงขึ้น |
| การแก้ปัญหา | สั่งให้ cmdlet แสดงข้อมูลการดีบัก |
| การดำเนินการผิดพลาด | กำหนดสิ่งที่ cmdlet จะทำเมื่อเกิดข้อผิดพลาด ค่าที่อนุญาต: continue, stop, silentlycontinue, inquire |
| ข้อผิดพลาดตัวแปร | ตั้งชื่อตัวแปรที่ใช้เก็บข้อมูลข้อผิดพลาด |
| ตัวแปรออก | สั่งให้ cmdlet เก็บผลลัพธ์ไว้ในตัวแปรที่ระบุ |
| ออกBuffer | กักเก็บวัตถุจำนวนหนึ่งไว้ก่อนส่งต่อไปยังขั้นตอนต่อไป |
ข้อดีของการใช้สคริปต์ PowerShell
- สคริปต์ PowerShell มีประสิทธิภาพและกระชับ คุณสามารถทำสิ่งต่างๆ ได้มากมายด้วยโค้ดเพียงไม่กี่บรรทัด
- ตัวแปรจะถูกประกาศด้วย
$<variable>วากยสัมพันธ์ - ตัวแปรสามารถเก็บผลลัพธ์ของคำสั่ง วัตถุ และค่าพื้นฐานได้
- ไม่จำเป็นต้องระบุประเภทตัวแปรอย่างชัดเจน
PowerShell เทียบกับ Command Prompt
| PowerShell | พร้อมรับคำสั่ง |
|---|---|
| ผสานรวมอย่างลึกซึ้งกับ Windowsมีระบบบรรทัดคำสั่งแบบโต้ตอบและภาษาสคริปต์แบบเต็มรูปแบบ | อินเทอร์เฟซบรรทัดคำสั่งเริ่มต้นที่จัดเตรียมโดย Microsoftแอปพลิเคชัน Win32 อย่างง่ายที่สื่อสารกับอ็อบเจ็กต์ Win32 อื่นๆ |
| ใช้คำสั่ง cmdlet ที่สามารถเรียกใช้งานได้โดยตรงหรือผ่านสคริปต์อัตโนมัติ | ไม่มีคำสั่ง cmdlet |
| ประมวลผลเอาต์พุตเป็นอ็อบเจ็กต์เพื่อให้สามารถส่งต่อไปยัง cmdlet อื่นผ่านทางไปป์ไลน์ได้ | ผลลัพธ์ที่ได้คือกระแสข้อความธรรมดา ไม่ใช่วัตถุ |
| ล้ำหน้าทั้งในด้านคุณสมบัติ ความสามารถ และสถาปัตยกรรมภายใน | เชลล์พื้นฐาน เหมาะสำหรับงานแบตช์แบบเก่า |
การประยุกต์ใช้ PowerShell
PowerShell กลายเป็นตัวเลือกมาตรฐานสำหรับผู้ดูแลระบบไอที เนื่องจากช่วยลดภาระงานในเครือข่ายองค์กรขนาดใหญ่ได้อย่างมาก ลองนึกภาพการจัดการเซิร์ฟเวอร์มากกว่าสี่ร้อยเครื่อง และการติดตั้งโซลูชันด้านความปลอดภัยใหม่ที่ต้องอาศัยบริการเฉพาะที่ทำงานอยู่บนทุกเครื่องดูสิ
การล็อกอินเข้าสู่เซิร์ฟเวอร์แต่ละเครื่องด้วยตนเองนั้นช้าและมีโอกาสเกิดข้อผิดพลาดสูง สคริปต์ PowerShell เพียงสคริปต์เดียวสามารถตรวจสอบเซิร์ฟเวอร์ทุกเครื่องได้ภายในไม่กี่นาที รายงานว่าโฮสต์ใดบ้างที่ใช้งานบริการอยู่แล้ว และยังสามารถเปิดใช้งานบนเซิร์ฟเวอร์ที่เหลือได้อีกด้วย สคริปต์จะบันทึกความต้องการเพียงครั้งเดียวและนำไปใช้ได้อย่างน่าเชื่อถือทั่วทั้งระบบ
















