บางครั้งคุณจำเป็นต้องมีแอปหรือสคริปต์เพื่อให้ทำงานต่อไปได้ ไม่ว่าคุณจะลงชื่อเข้าใช้คอมพิวเตอร์หรือไม่ก็ตาม อาจเป็นสคริปต์ PowerShell เพื่อตรวจสอบพอร์ตหรือเว็บเซิร์ฟเวอร์ที่โฮสต์เพจบนเครือข่ายในบ้านของคุณ
ประเด็นก็คือ หากคุณต้องการให้กระบวนการ สคริปต์ หรือโปรแกรมทำงานตราบเท่าที่คอมพิวเตอร์เปิดอยู่ คุณจะต้องสร้าง Windows Service
ฉันต้องสร้างบริการ Windows อย่างไร
ในการสร้างบริการ Windows ใน Windows 10 มีข้อกำหนดเบื้องต้นบางประการ:
- การเข้าถึงของผู้ดูแลระบบบนคอมพิวเตอร์
- สิ่งที่เรียกใช้เป็นบริการ (สคริปต์ PowerShell โปรแกรม ฯลฯ)
- ติดตั้ง Non-Sucking Service Manager (NSSM) แล้ว
ผู้จัดการบริการที่ไม่ดูดคืออะไร
ใช่ คุณไม่สามารถตั้งชื่อแบบนั้นโดยไม่อธิบายได้ แน่นอนว่าชื่อนั้นน่าเสียดาย แต่ก็ถูกต้อง Non-Sucking Service Manager (NSSM) อาจเป็นวิธีที่ง่ายที่สุดในการสร้างบริการ Windows ที่มีความน่าเชื่อถือสูงและกำหนดค่าได้ นอกจากนี้ยังเป็นซอฟต์แวร์โอเพ่นซอร์ส (OSS) ฟรีอีกด้วย
NSSM สามารถใช้ได้ผ่านพรอมต์คำสั่งของ Windows หรืออินเทอร์เฟซผู้ใช้แบบกราฟิก (GUI) ซึ่งหมายความว่าทุกคนสามารถใช้ได้ NSSM สามารถใช้ได้กับ Windows เวอร์ชันใดก็ได้ที่ย้อนกลับไป รวมถึง Windows 2000 มีเวอร์ชัน 32 บิตและ 64 บิต หากคุณใช้คอมพิวเตอร์ 64 บิต ให้ลองใช้เวอร์ชันนั้นก่อน หากไม่ได้ผล ให้ถอยกลับไปใช้เวอร์ชัน 32 บิต
คุณสามารถดาวน์โหลด NSSM ได้จากเว็บไซต์ โคลน NSSM จาก Git หรือติดตั้ง NSSM ด้วย Chocolatey Chocolatey เป็นผู้จัดการแพ็คเกจสำหรับ Windows วิธีการติดตั้งจะแตกต่างกันไปตามเส้นทางที่คุณใช้ โปรดศึกษาคำแนะนำของ NSSM ตัวอย่างเช่น เรากำลังดาวน์โหลดจากเว็บไซต์ NSSM และติดตั้งใน C:\WINDOWS\system32 .
สร้างบริการ Windows ด้วย NSSM
สำหรับตัวอย่างนี้ เราจะสร้างบริการจากสคริปต์ PowerShell เพื่อบันทึกเปอร์เซ็นต์การโหลดเฉลี่ยของ CPU
- คัดลอกและบันทึกสคริปต์นี้เป็น log-CPULoadPercentage.ps1 ไปยังสถานที่ที่ไม่มีใครเข้าถึงได้ ลองสร้างไดเร็กทอรี C:/Scripts และเก็บไว้ที่นั่น นอกจากนี้ ให้สร้างโฟลเดอร์ในสคริปต์ชื่อ บันทึก . โปรดทราบว่าเส้นทางไปยังสคริปต์คือ C:/Scripts/log-CPULoadPercentage.ps1 . คุณจะต้องใช้ในภายหลัง
หมายเหตุ :บรรทัดด้านล่างทั้งหมดตามด้วยสัญลักษณ์ # เป็นความคิดเห็นและจะไม่มีผลกับสคริปต์
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
- สามารถทำได้ใน พรอมต์คำสั่งของ Windows หรือ PowerShell เปิดเป็นผู้ดูแลระบบ
- ป้อนคำสั่ง nssm ติดตั้ง logCPUAvg และเรียกใช้ ตัวติดตั้งบริการ NSSM หน้าต่างจะเปิดขึ้น
- คลิกที่ปุ่มวงรีถัดจาก เส้นทาง: ให้ไปที่ powershell.exe ซึ่งปกติจะอยู่ที่ C:\Windows\System32\ . เลือก powershell.exe เส้นทาง: และ ไดเรกทอรีเริ่มต้น: ฟิลด์จะถูกเติมโดยอัตโนมัติ
- ป้อนข้อมูลต่อไปนี้ใน อาร์กิวเมนต์: ฟิลด์:-ExecutionPolicy Bypass -NoProfile -File “C:\PathToScript\get-Script.ps1” โดยที่ส่วนสุดท้ายคือเส้นทางไปยังสคริปต์ PowerShell และชื่อสคริปต์
- เลือก รายละเอียด แท็บ ป้อนสิ่งที่คุณต้องการให้บริการแสดงในตัวจัดการบริการของ Windows ลงใน ชื่อที่แสดง: สนาม. จากนั้น ป้อนสิ่งที่ทำใน คำอธิบาย: สนาม. ประเภทการเริ่มต้น: สามารถตั้งค่าเป็น อัตโนมัติ , อัตโนมัติ (เริ่มล่าช้า) , คู่มือ , หรือ ปิดการใช้งาน . สำหรับแบบฝึกหัดนี้ Automatic ดี
- เลือก เข้าสู่ระบบ แท็บ เลือก บัญชีนี้ :ปุ่มตัวเลือกและป้อนบัญชีและรหัสผ่านที่บริการจะทำงานเป็น คุณจะต้องเลือกบัญชีที่จะใช้บริการ ตามหลักการแล้ว คุณจะมีบัญชี Windows ที่สร้างขึ้นเพื่อใช้บริการนี้โดยเฉพาะ สิทธิ์ของบัญชีนี้ควรจำกัดเฉพาะสิ่งที่บริการต้องทำเท่านั้น คุณสามารถเลือกบัญชี Local System แต่ไม่แนะนำด้วยเหตุผลด้านความปลอดภัย
มีแท็บอื่นๆ อีกหลายแท็บที่สามารถใช้ปรับแต่งบริการได้ สำหรับแบบฝึกหัดนี้ ค่าเริ่มต้นในแท็บเหล่านั้นก็เพียงพอแล้ว เลือก ติดตั้งบริการ ปุ่ม.
- เมื่อติดตั้งบริการแล้ว คุณจะเห็น บริการ “logCPUAvg” ติดตั้งสำเร็จ! หน้าต่าง. เลือก ตกลง เพื่อปิดมัน ที่สรุปการติดตั้ง
- เปิด Windows Services Manager และมั่นใจได้ถึงการบริการ
- เรียกใช้บริการเพื่อให้แน่ใจว่าจะทำงานได้
- ในการตรวจสอบว่าบริการนี้กำลังทำงานอยู่ ให้ใช้ File Explorer เพื่อไปยังตำแหน่งที่ควรบันทึกบันทึกเพื่อดูว่ามีบันทึกอยู่หรือไม่
nssm-check-log.png
การลบบริการ Windows ด้วย NSSM
บางทีคุณอาจไม่ต้องเฝ้าติดตามโหลด CPU ของคุณอีกต่อไป ดังนั้น คุณจึงต้องการกำจัดบริการ โชคดีที่ NSSM ทำให้เป็นเรื่องง่าย
- ใน Windows Services Manager ,หยุดบริการ. ทำได้โดยเลือก บันทึกการโหลดเฉลี่ยของ CPU บริการ จากนั้นเลือกปุ่มหยุดสี่เหลี่ยมในแถบเครื่องมือหรือ หยุดบริการ ทางด้านซ้ายมือ
- เปิด พรอมต์คำสั่งของ Windows หรือ PowerShell ในฐานะผู้ดูแลระบบ
- ป้อนคำสั่ง nssm ลบ logCPUAvg และดำเนินการคำสั่ง
- NSSM จะขอให้คุณยืนยัน เลือก ใช่ .
- เมื่อลบบริการ คุณจะเห็นว่า บริการ “logCPUAvg” ถูกลบสำเร็จ! การยืนยัน เลือก ตกลง และเสร็จแล้ว
นั่นคือทั้งหมด เป็นความคิดที่ดีที่จะตรวจสอบผู้จัดการบริการเพื่อให้แน่ใจว่าไม่มีบริการอยู่ที่นั่นอีกต่อไป หากคุณยังคงเห็นบริการ คุณอาจต้องรีเฟรชหน้าจอและมันจะหายไป
บริการเป็นวิธีที่ยอดเยี่ยมในการเรียกใช้แอปหรือสคริปต์ที่ต้องเรียกใช้ตลอดเวลา รีสตาร์ทตัวเองหากล้มเหลว หรือต้องการสิทธิ์ที่แตกต่างจากผู้ใช้ปัจจุบัน หากคุณไม่ต้องการให้แอปหรือสคริปต์ของคุณทำสิ่งเหล่านั้น ให้ลองใช้งานที่กำหนดเวลาไว้แทน