Как создать службу Windows


Иногда вам нужно, чтобы приложение или скрипт продолжали работать независимо от того, вошли вы в свой компьютер или нет. Возможно, это Скрипт PowerShell для мониторинга портов или веб-сервер, на котором размещена страница в вашей домашней сети.

Дело в том, что если вы хотите, чтобы процесс, сценарий или программа выполнялись, пока компьютер включен, вам необходимо создать Служба Windows.

Что мне нужно для создания службы 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-скрипт для регистрации Средний процент загрузки процессора.

    1. Скопируйте и сохраните этот сценарий как log-CPULoadPercentage.ps1 в место, к которому никто другой вряд ли сможет получить доступ. Попробуйте создать каталог C:/Scripts и сохранить его там. Кроме того, создайте папку в скриптах под названием Журналы . Обратите внимание, что путь к сценарию — C:/Scripts/log-CPULoadPercentage.ps1 . Это понадобится вам позже.
    2. Примечание . Все строки ниже, за которыми следует символ #, являются комментариями и не влияют на скрипт..

      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 или PowerShell. Откройте его от имени администратора.
      2. Введите команду nssm install logCPUavg и запустите ее. Откроется окно Установщик службы NSSM .
        1. Нажмите кнопку с многоточием рядом с полем Путь: и перейдите к файлу powershell.exe , который обычно находится в папке C:\Windows\System32\. Выберите powershell.exe. Поля Путь: и Каталог запуска: будут заполнены автоматически.
          1. Введите следующее в поле Аргументы: : -ExecutionPolicy Bypass -NoProfile -File «C:\PathToScript\get-Script.ps1» , где последняя часть — это путь к вашему сценарию PowerShell и имя сценария.
            1. Выберите вкладку Подробности . Введите то, как служба должна отображаться в диспетчере служб Windows, в поле Отображаемое имя: . Затем введите, что он делает, в поле Описание: . Тип запуска: можно установить как Автоматический , Автоматический (отложенный запуск) , Вручную или . Отключено . Для этого упражнения подойдет автоматический вариант.
              1. Выберите вкладку Войти . Выберите Эта учетная запись : переключатель и введите учетную запись и пароль, под которым будет работать служба. Вам нужно будет выбрать учетную запись, под которой будет работать служба. В идеале у вас должна быть учетная запись Windows, созданная только для запуска этой службы. Разрешения этой учетной записи должны быть ограничены только тем, что необходимо делать службе. Вы можете выбрать Учетную запись локальной системы , но это не рекомендуется по соображениям безопасности.
              2. Существует несколько других вкладок, которые можно использовать для настройки службы. Для этого упражнения значений по умолчанию на этих вкладках достаточно. Нажмите кнопку Установить службу ..

                <ол старт="8">
              3. Когда служба будет установлена, вы увидите, что Служба «logCPUavg» установлена ​​успешно! окно. Нажмите ОК , чтобы закрыть его. На этом установка завершена.
                1. Откройте Диспетчер служб Windows и убедитесь, что служба присутствует.
                  1. Запустите службу, чтобы убедиться, что она работает.
                  2. <ол старт="11">
                  3. Чтобы убедиться, что эта служба работает, используйте Проводник , чтобы перейти туда, где должен быть сохранен журнал, и проверить, существует ли он.
                  4. <рисунок class="aligncenter size-large">

                    nssm-check-log.png

                    Удаление службы Windows с помощью NSSM

                    Возможно, вам больше не нужно загружать следить за своим процессором, и вы захотите избавиться от этой службы. К счастью, NSSM упрощает эту задачу.

                    1. В Диспетчере служб Windows остановите службу. Для этого выберите службу Журнал средней загрузки ЦП , а затем нажмите квадратную кнопку остановки на панели инструментов или ссылку Остановить службу слева.
                      1. Откройте Командную строку Windows или PowerShell от имени администратора.
                      2. Введите команду nssm удалить logCPUavg и выполните команду.
                        1. NSSM попросит вас подтвердить. Выберите Да .
                          1. Когда служба будет удалена, вы увидите, что Служба «logCPUavg» успешно удалена! Подтверждение. Нажмите ОК , и все готово.
                          2. Вот и все. Рекомендуется проверить диспетчер служб, чтобы убедиться, что службы больше нет. Если вы по-прежнему видите службу, возможно, вам придется обновить экран, и она должна исчезнуть.

                            Сервисы — отличный способ запускать приложения или сценарии, которые должны выполняться постоянно, перезапускаться в случае сбоя или нуждаться в привилегиях, отличных от полномочий текущего пользователя. Если вам не нужно, чтобы ваше приложение или скрипт выполнял все эти функции, рассмотрите вариант использование запланированной задачи..

                            .

                            Похожие сообщения:


                            12.11.2020