วิธีสร้างบริการ Windows

บางครั้งคุณจำเป็นต้องมีแอปหรือสคริปต์เพื่อให้ทำงานต่อไปได้ ไม่ว่าคุณจะลงชื่อเข้าใช้คอมพิวเตอร์หรือไม่ก็ตาม อาจเป็นสคริปต์ PowerShell เพื่อตรวจสอบพอร์ต(PowerShell script to monitor ports)หรือเว็บเซิร์ฟเวอร์ที่โฮสต์เพจบนเครือข่ายในบ้านของ(web server hosting a page on your home network)คุณ

ประเด็นก็คือ หากคุณต้องการให้กระบวนการ สคริปต์ หรือโปรแกรมทำงานตราบเท่าที่คอมพิวเตอร์เปิดอยู่ คุณจะต้องสร้างWindows Service(Windows Service)

ฉันต้องทำอะไรเพื่อสร้างบริการ Windows(What Do I Need to Create a Windows Service?)

ในการสร้าง บริการ WindowsในWindows 10มีข้อกำหนดเบื้องต้นบางประการ: 

  • การเข้าถึงของ ผู้ดูแลระบบ(Administrator)บนคอมพิวเตอร์
  • บางสิ่งที่จะเรียกใช้เป็นบริการ ( PowerShell Script , โปรแกรม ฯลฯ )
  • ติดตั้ง Non-Sucking Service Manager ( NSSM ) แล้ว

ผู้จัดการบริการที่ไม่ดูดคืออะไร?(What Is the Non-Sucking Service Manager?)

ใช่ คุณไม่สามารถตั้งชื่อแบบนั้นโดยไม่อธิบายได้ แน่นอนว่าชื่อนั้นน่าเสียดาย แต่ก็ถูกต้อง Non-Sucking Service Manager ( NSSM ) อาจเป็นวิธีที่ง่ายที่สุดในการสร้าง บริการ Windowsที่มีความน่าเชื่อถือสูงและกำหนดค่าได้ นอกจากนี้ยังเป็นซอฟต์แวร์โอเพ่นซอร์ส(Open Source Software) (OSS) ฟรีและฟรี

สามารถใช้ NSSM ผ่านพรอมต์คำสั่งของ Windows(Windows Command Prompt)หรืออินเทอร์เฟซผู้ใช้แบบกราฟิก ( GUI ) ซึ่งหมายความว่าทุกคนสามารถใช้ได้ NSSM สามารถใช้ได้กับWindows เวอร์ชันใดก็ได้ที่ย้อนกลับ ไปรวมถึงWindows 2000 มีรุ่น32 บิตและ 64 บิต (32-bit and 64-bit)หากคุณใช้คอมพิวเตอร์ 64 บิต ให้ลองใช้เวอร์ชันนั้นก่อน หากไม่ได้ผล ให้ถอยกลับไปใช้เวอร์ชัน 32 บิต 

คุณสามารถดาวน์โหลด NSSM ได้จากเว็บไซต์(download NSSM from the website)โคลนNSSM จาก Git(clone NSSM from Git)หรือ ติดตั้ง NSSM ด้วยChocolatey (install NSSM with Chocolatey)Chocolatey เป็นผู้จัดการแพ็คเกจสำหรับ(Chocolatey is a package manager for Windows) Windows วิธีการ ติดตั้ง(Installation)จะแตกต่างกันไปตามเส้นทางที่คุณใช้ โปรด(Please)ศึกษาคำแนะนำของNSSM ตัวอย่างเช่น เรากำลังดาวน์โหลดจาก เว็บไซต์ NSSMและติดตั้งใน C : C:\WINDOWS\system32

สร้างบริการ Windows ด้วย NSSM(Create a Windows Service With NSSM)

สำหรับตัวอย่างนี้ เราจะสร้างบริการจากสคริปต์ PowerShell(PowerShell script)เพื่อบันทึกเปอร์เซ็นต์การโหลดเฉลี่ยของ(CPU average load percentage) CPU 

  1. คัดลอกและบันทึกสคริปต์นี้เป็นlog-CPULoadPercentage.ps1ไปยังสถานที่ที่คนอื่นไม่สามารถเข้าถึงได้ ลองสร้างไดเร็กทอรีC:/Scripts และเก็บไว้ที่นั่น นอกจากนี้ ให้สร้างโฟลเดอร์ในสคริปต์(Scripts)ที่เรียกว่าLogs โปรดทราบว่าเส้นทางไปยังสคริปต์คือ C : C:/Scripts/log-CPULoadPercentage.ps1คุณจะต้องใช้ในภายหลัง

หมายเหตุ(Note) : ทุกบรรทัดด้านล่างตามด้วยสัญลักษณ์ # เป็นความคิดเห็นและจะไม่มีผลกับสคริปต์

CLS #Optional. I like to use this to clear the terminal when testing.

#Make sure you have a folder called Logs in the same directory as this script
#The log is where the records will be stored.
Start-Transcript -Path "$PSScriptRoot\Logs\log-CPULoadPercentage-$(get-date -f yyyy-MM-dd).txt" -Append

#While loop keeps it running until manually stopped
While ($True){
     #Creates a timestamp to know when the measurement was taken
     $timeStamp = get-date -f yyyy-MM-h:mm:ss

     #Gets the average load percentage at that time, then waits 5 seconds to do it again.
     $cpuLoadPercent = Get-CimInstance win32_processor | Measure-Object -Property LoadPercentage -Average | Select-Object Average;Start-Sleep -Seconds 5

     #Isolates just the average so there isn't a weird @{Average=13} string
     $cpuLoadPercent = $cpuLoadPercent.Average

     #writes results to screen, or in this case to the log
     Write-Host "$timeStamp CPU Load Percentage $cpuLoadPercent"
}

Stop-Transcript
  1. ซึ่งสามารถทำได้ในWindows Command PromptหรือPowerShell เปิดเป็นผู้ดูแล(Open it as Administrator)ระบบ
  2. ป้อนคำสั่งnssm ติดตั้ง logCPUAvg(nssm install logCPUAvg)และเรียกใช้ หน้าต่าง ตัวติดตั้งบริการ NSSM(NSSM service installer)จะเปิดขึ้น

  1. คลิก(Click)ที่ปุ่มจุดไข่ปลาที่อยู่ถัดจากช่องPath:ไปที่powershell.exeซึ่งปกติจะอยู่ที่C C:\Windows\System32\เลือก powershell.exe ฟิลด์Path:และStartup directory:จะถูกเติมโดยอัตโนมัติ

  1. ป้อนข้อมูลต่อไปนี้ในฟิลด์Arguments : -ExecutionPolicy Bypass -NoProfile -File “C:\PathToScript\get-Script.ps1”โดยที่ส่วนสุดท้ายคือพาธไปยัง สคริปต์ PowerShell ของคุณ และชื่อสคริปต์  

  1. เลือกแท็บรายละเอียด (Details)ป้อนสิ่งที่คุณต้องการให้บริการแสดงในตัว จัดการ บริการ ของ (Services)Windows ลงในฟิลด์ชื่อที่แสดง: (Display name: )จากนั้น ป้อนสิ่งที่ทำในช่องคำอธิบาย: (Description:)ประเภท การเริ่มต้น:(Startup type: )สามารถตั้งค่าเป็นAutomatic , Automatic (Delayed Start ) , ManualหรือDisabled สำหรับแบบฝึกหัดนี้Automaticเป็นสิ่งที่ดี

  1. เลือกแท็บเข้าสู่ระบบ (Log on )เลือกบัญชีนี้(This account) : ปุ่มตัวเลือก และป้อนบัญชีและรหัสผ่านที่บริการจะทำงาน คุณจะต้องเลือกบัญชีที่จะใช้บริการ ตามหลักการแล้ว คุณจะมี บัญชี Windows ที่ สร้างขึ้นเพื่อใช้บริการนี้โดยเฉพาะ สิทธิ์ของบัญชีนี้ควรจำกัดเฉพาะสิ่งที่บริการต้องทำเท่านั้น คุณสามารถเลือกบัญชี Local System ได้(Local System account)แต่ไม่แนะนำด้วยเหตุผลด้านความปลอดภัย

มีแท็บอื่นๆ อีกหลายแท็บที่สามารถใช้ปรับแต่งบริการได้ สำหรับแบบฝึกหัดนี้ ค่าเริ่มต้นในแท็บเหล่านั้นก็เพียงพอแล้ว เลือกปุ่มติดตั้งบริการ(Install service )

  1. เมื่อติดตั้งบริการแล้ว คุณจะเห็นService “logCPUAvg” installed successfully! หน้าต่าง. เลือกตกลง(OK)เพื่อปิด ที่สรุปการติดตั้ง

  1. เปิดWindows Services Managerและตรวจสอบให้แน่ใจว่ามีบริการอยู่ที่นั่น

  1. เรียกใช้(Run)บริการเพื่อให้แน่ใจว่าจะทำงาน

  1. ในการตรวจสอบว่าบริการนี้กำลังทำงานอยู่ ให้ใช้File Explorerเพื่อไปยังตำแหน่งที่ควรบันทึกบันทึกเพื่อดูว่ามีอยู่หรือไม่

nssm-check-log.png

การลบบริการ Windows ด้วย NSSM(Removing a Windows Service With NSSM)

บางทีคุณอาจไม่ต้องเฝ้าติดตามโหลด CPU ของคุณ(monitor your CPU)อีกต่อไป ดังนั้น คุณจึงต้องการกำจัดบริการ โชคดีที่NSSMทำให้มันง่าย 

  1. ในWindows Services Managerให้หยุดบริการ ทำได้โดยเลือกบริการLog CPU Average Loadแล้วเลือกปุ่มหยุดสี่เหลี่ยมในแถบเครื่องมือหรือ ลิงก์ หยุดบริการ(Stop the service)ทางด้านซ้าย

  1. เปิดWindows Command PromptหรือPowerShellในฐานะผู้ดูแลระบบ
  2. ป้อนคำสั่งnssm ลบ logCPUAvg(nssm remove logCPUAvg)และดำเนินการคำสั่ง 

  1. NSSMจะขอให้คุณยืนยัน เลือกใช่(Yes) _

  1. เมื่อบริการถูกลบออก คุณจะเห็นService “logCPUAvg” removed successfully! การยืนยัน เลือกตกลง(OK)และคุณทำเสร็จแล้ว

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

บริการเป็นวิธีที่ยอดเยี่ยมในการเรียกใช้แอปหรือสคริปต์ที่ต้องเรียกใช้ตลอดเวลา รีสตาร์ทตัวเองหากล้มเหลว หรือต้องการสิทธิ์ที่แตกต่างจากผู้ใช้ปัจจุบัน หากคุณไม่ต้องการให้แอพหรือสคริปต์ของคุณทำสิ่งเหล่านั้น ให้ลองใช้งานที่กำหนดเวลาไว้(using a Scheduled Task)แทน



About the author

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



Related posts