Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ซอฟต์แวร์ >> ซอฟต์แวร์

คู่มือ PowerShell สำหรับผู้ใช้ทั่วไป: เริ่มต้นจนถึงสคริปต์ลบไฟล์ Temp อัตโนมัติ

PowerShell = Command-line Shell + Scripting Language จาก Microsoft ใช้งานบน Windows, macOS, Linux ได้ (PowerShell 7+ Cross-platform) อ่านเข้าใจง่าย คล้ายภาษาอังกฤษ ไม่ได้เป็นโปรแกรมเมอร์ก็เรียนรู้ได้

ทำไมต้องเรียน PowerShell?

  • Automate งานซ้ำ (Delete Temp Files, Rename Files จำนวนมาก, Backup, Report)
  • จัดการ Windows ลึกกว่า GUI (Registry, Services, Scheduled Tasks, ACL, WMI/CIM)
  • Remote Management หลายเครื่องพร้อมกัน
  • ทักษะที่มีค่าในตลาดงาน IT/DevOps/SysAdmin

เริ่มต้น: PowerShell ISE (Integrated Scripting Environment)

  1. Start → พิมพ์ "powershell ise" → คลิกขวา → "Run as Administrator"
  2. ยอมรับ UAC (User Account Control)
  3. UI 3 ส่วน: (1) Script Pane (บน) เขียนโค้ด, (2) Console Pane (ล่าง) Output/Error, (3) Commands Pane (ขวา) ค้นหา Cmdlets

ตั้งค่า Execution Policy (ครั้งแรกเท่านั้น)

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

RemoteSigned = รัน Script Local ได้เลย, Script จาก Internet ต้องมี Digital Signature

ตัวอย่างสคริปต์จริง: ลบไฟล์ Temporary Files อัตโนมัติ

$TempFileLocation = "C:\Users\$env:USERNAME\AppData\Local\Temp\*"

$TempFile = Get-ChildItem $TempFileLocation -Recurse

$TempFileCount = ($TempFile).Count

if ($TempFileCount -eq 0) {
    Write-Host "No temporary files found in $TempFileLocation" -ForegroundColor Green
}
else {
    $TempFile | Remove-Item -Force -Recurse -ErrorAction SilentlyContinue -WarningAction SilentlyContinue
    Write-Host "Deleted $TempFileCount temporary files from $TempFileLocation" -ForegroundColor Green
}

อธิบายสคริปต์ทีละบรรทัด

บรรทัดคำอธิบาย
$TempFileLocation = ...ตัวแปร (Variable) เก็บ Path ไฟล์ Temp ($env:USERNAME = ชื่อผู้ใช้ปัจจุบัน)
Get-ChildItem -RecurseCmdlet: ดึงรายการไฟล์/โฟลเดอร์ทั้งหมด (รวม Subfolders) → เก็บใน $TempFile
$TempFileCount = ($TempFile).Countนับจำนวนไฟล์ → เก็บใน $TempFileCount
if ($TempFileCount -eq 0)Condition: ถ้าไม่มีไฟล์
Write-Host ... -ForegroundColor Greenแสดงข้อความสีเขียว (ไม่ใช่ Error)
else { ... }ถ้ามีไฟล์ → ทำใน Block นี้
$TempFile | Remove-Item ...Pipe (|) ส่ง Object ไปให้ Remove-Item ลบ -Force บังคับลบ, -Recurse ลบใน Subfolder, -ErrorAction SilentlyContinue ไม่แสดง Error
Write-Host "Deleted $TempFileCount files..."รายงานจำนวนไฟล์ที่ลบ

วิธีใช้งานสคริปต์

  1. Copy โค้ดข้างต้น → วางใน Script Pane (บน)
  2. กด Ctrl+S บันทึกเป็น Clean-TempFiles.ps1
  3. รัน: คลิกขวาไฟล์ .ps1 → "Run with PowerShell" หรือใน ISE กด F5 (ปุ่ม Play สีเขียว)
  4. สร้าง Scheduled Task (Task Scheduler) รันทุกวัน/สัปดาห์ อัตโนมัติ

แนวคิดพื้นฐานที่ควรจดจำ

  • Cmdlet = Verb-Noun: Get-ChildItem, Set-ExecutionPolicy, Remove-Item, Write-Host (ทายได้ว่าทำอะไร)
  • Variable = $Name: เริ่มต้นด้วย $ เสมอ
  • Pipeline (|): ส่ง Output ของ Cmdlet ตัวก่อน → Input ของ Cmdlet ตัวหลัง
  • Object-based: ไม่ใช่ Text Stream (เหมือน Bash) แต่เป็น .NET Object มี Properties/Methods
  • Help System: Get-Help Get-ChildItem -Examples / Get-Help about_*

แหล่งเรียนรู้ต่อไป

  • Microsoft Learn: PowerShell Learning Path
  • PowerShell Documentation: Get-Help ภายใน Shell
  • "PowerShell in a Month of Lunches" (Book - Don Jones/Jeffery Hicks)
  • YouTube: "PowerShell Tutorial" (TechSnips, Adam Bertram, Microsoft)
  • Practice: เขียนสคริปต์แก้ปัญหาเล็กๆ น้อยๆ ทุกวัน

PowerShell ไม่ใช่เวทมนตร์ แต่มันคือ "คีย์" ที่ปลดล็อกความสามารถของ Windows ให้คุณควบคุมได้จริง เริ่มจากสคริปต์เล็กๆ อย่างนี้ แล้วค่อยขยายไปเรื่อยๆ