แอปพลิเคชันที่คุณเห็นบนหน้าจอ เป็นเพียงส่วนเล็กน้อยของสิ่งที่เกิดขึ้นใน Windows จากการจัดการ Device Drivers จนถึงการטחรักษาความปลอดภัย กระบวนการพื้นหลังจำนวนมากทำให้ Windows PC ทำงานได้
สำหรับ System Administrator ที่ดูแลหลายคอมพิวเตอร์ การดูสถานะของบริการสำคัญเหล่านี้เป็นสิ่งจำเป็น วิธี Task Manager ช้าเกินไป และไม่สามารถทำอัตโนมัติด้วย Script ได้
โซลูชัน? เครื่องมือ Command-line ด้วย Command Prompt หรือ PowerShell คุณสามารถตรวจสอบสถานะ Microsoft Services ที่ทำงานอยู่ได้อย่างรวดเร็ว ช่วยวินิจฉัยปัญหาได้รวดเร็วขึ้น
แสดงรายการ Windows Services ใน Command Prompt
แม้ยืดหยุ่นและทรงพลังน้อยกว่า PowerShell Command Prompt ยังเป็นเครื่องมือดีสำหรับ System Admin ใช้คำสั่ง queryex (sc queryex) เพื่อดูสถานะ Service ที่ Active และ Disabled แล้วใช้ Taskkill จบ Process ที่รบกวน
- รัน Command Prompt เป็น Administrator ค้นหา cmd ใน Start Menu
- มีหลายวิธีใช้ sc queryex Command Type และ State เป็น Parameters ที่ใช้บ่อยสุด ตัวอย่าง: พิมพ์คำสั่งนี้เพื่อดู Windows Processes ทั้งหมด:
sc queryex type=service state=all
- มุมมองเริ่มต้นอาจล้นหลาม แสดงแค่ชื่อ Process เพื่ออ่านง่ายขึ้น:
sc queryex type=service state=all | find /i "SERVICE_NAME:"
- ค่าเริ่มต้นแสดง Active Processes ทั้งหมด หา Inactive ให้แก้ Parameter State:
sc queryex type=service state=inactive
- Query สถานะ Process เฉพาะจากชื่อ: เหมาะสำหรับ Admin ตั้ง Batch Files เช็คหลาย Process พร้อมกัน ตัวอย่าง:
sc query DeviceInstall
แสดงรายการ Windows Services ใน PowerShell
PowerShell เป็น Command-line Shell 專用สำหรับ Windows สมัยใหม่ เข้าถึงองค์ประกอบ OS เกือบทุกอย่างผ่านคำสั่ง Windows Services ไม่ใช่ข้อยกเว้น
ข้อได้เปรียบ PowerShell: ทำอัตโนมัติได้ง่าย คำสั่ง PowerShell ทั้งหมดคอมไพล์เป็น Scripts ซับซ้อนได้ ตั้งค่างานบริหารระบบบนหลาย PC ได้โดยไม่ยุ่งยาก
- เปิด PowerShell ค้นหาใน Start Menu ต้องรันเป็น Elevated Instance (Administrator)
- คำสั่งง่ายที่สุดสำหรับรายการ Windows Services ใน PowerShell คือ Get-Service แสดง Services ทั้งหมดพร้อมสถานะและชื่อ ปัญหา: รายการอาจยาวมาก
- ใช้ Get-Service ควร Export รายการไปไฟล์ Text ด้วย Pipes:
Get-Service | Out-File "C:\logs\All_Services.txt"
- ดูสถานะ Service เฉพาะ: ต่อ Get-Service ด้วยชื่อ Service ขอสถานะหลาย Process ได้ โดยคั่นชื่อด้วย Comma
Get-Service CryptSvc, COMSysApp
- Pipes รวม Get-Service กับ Where-Object กรองผลลัพธ์ตาม Status คำสั่งนี้ดึง Services ที่ Running ทั้งหมด:
Get-Service | Where-Object {$_.Status -EQ "Running"}
ตรวจสอบ Service Dependencies (การพึ่งพาซ้ำซ้อน)
Process ซับซ้อน แบ่งเป็นหลาย Services ที่相互依存 (Interdependent) การดูสถานะ Service เฉพาะมักไม่พอ ต้องเช็คสถานะ Services ที่ Service นั้นพึ่งพาด้วย
- ดู Services ที่ Service เฉพาะต้องการ ใช้ Flag -RequiredServices กับ Get-Service ตัวอย่าง:
Get-Service -Name CryptSvc –RequiredServices
- ดู Services ที่พึ่งพา Service เฉพาะ ใช้ Flag -DependentServices
Get-Service -Name CryptSvc -DependentServices
Flag ทั้งสองสำคัญสำหรับเขียน Script Start/Stop Windows Services อัตโนมัติ ให้วิธีติดตาม Services ที่เกี่ยวข้องกับ Service ที่ได้รับผลกระทบ
แสดงรายการ Windows Services บนคอมพิวเตอร์ระยะไกล (Remote Computers)
วิธี PowerShell ไม่จำกัดแค่ Local Computer ใช้ Get-Service Cmdlet ด้วย Syntax เดียวกัน Query Processes ของ Remote PCs ได้ เพียงต่อ Flag -ComputerName ท้ายสุด เพื่อระบุ Remote Computer
ตัวอย่าง: get-service CryptSvc -ComputerName Workstation7
จัดการ Windows Services ใน PowerShell
ดูสถานะ Services ไม่ใช่สิ่งเดียวที่ทำได้ใน PowerShell بصفته Scripting Environment เต็มรูปแบบ มี Cmdlets ทดแทนตัวเลือก GUI ทั้งหมด
PowerShell Cmdlets สามารถ Stop, Start, Restart หรือ Modify Services ได้ ร่วมกับ Get-Service อัตโนมัติ Scripts สามารถเขียนเพื่อทำอัตโนมัติงานบริหารระบบประจำวันได้เต็มที่
- นอกจาก Query สถานะ ยังจัดการ Services ได้ เริ่ม/หยุด Service ด้วยคำสั่งเดียว ต้องการแค่ชื่อ Service ตัวอย่างหยุด Service:
Stop-Service -Name Spooler
- เริ่ม Service คล้ายกัน: Start-Service -Name Spooler
- Service ทำงานผิดปกติ สามารถ Restart: Restart-Service -Name Spooler
- มี Set-Service Cmdlet เปลี่ยน Properties ของ Service ตัวอย่าง: ปิด Auto-start ของ Print Spooler:
Set-Service 'Spooler' -StartupType Disabled
วิธีไหนดีที่สุดสำหรับรายการ Windows Services?
ไม่ว่าจะ Windows 10 หรือ Windows Server การดูรายการ Windows Services ทั้งหมดมีประโยชน์ วินิจฉัยปัญหา Critical System Functions หรือหยุด Microsoft Services ที่ไม่จำเป็นเพื่อเพิ่มประสิทธิภาพ
PowerShell เป็นตัวเลือกที่ดีที่สุด แม้ Command Prompt ได้รายการ Services แต่ฟังก์ชันเพิ่มเติมของ PowerShell มีประโยชน์กว่า
ใช้ PowerShell Cmdlets ได้สถานะ Services กรองตาม Status หรือ Parameters อื่นๆ หา Dependent Services เริ่ม/หยุดได้ตามต้องการง่ายดาย