Windowsサービスを作成する方法


パソコンにログインしているかどうかに関係なく、実行を継続するためにアプリやスクリプトが必要になる場合があります。多分それはポートを監視するPowerShellスクリプト またはホームネットワーク上のページをホストしているWebサーバー です。

重要なのは、コンピューターの電源が入っている限りプロセス、スクリプト、またはプログラムを実行する場合は、Windowsサービス を作成する必要があるということです。

Windowsサービスを作成するには何が必要ですか?

Windows 10でWindowsサービスを作成するには、いくつかの前提条件があります。

  • コンピューターへの管理者アクセス
  • サービスとして実行するもの(PowerShellスクリプト、プログラムなど)
  • Non-Sucking Service Manager(NSSM)がインストールされている
  • Non-Sucking Service Managerとは何ですか?

    はい、説明せずにそのような名前を削除することはできません。確かに名前は残念ですが、それでも正確です。 Non-Sucking Service Manager(NSSM)は、信頼性が高く構成可能なWindowsサービスを作成するための最も簡単な方法です。さらに、無料でオープンソースソフトウェア (OSS)です。

    NSSMは、Windowsコマンドプロンプト またはグラフィカルユーザーインターフェイス(GUI )。これは、誰でも使用できることを意味します。 NSSMは、Windows2000に戻るWindowsのすべてのバージョンで使用できます。32ビットおよび64ビット のバージョンがあります。 64ビットコンピューターを使用している場合は、最初にそのバージョンを試してください。動作しない場合は、32ビットバージョンにフォールバックします。

    ウェブサイトからNSSMをダウンロードするGitからNSSMのクローンを作成する 、またはChocolateyでNSSMをインストールする が可能です。 ChocolateyはWindowsのパッケージマネージャーです 。インストール方法は、使用するルートによって異なります。 NSSMの指示を参照してください。この例では、NSSM Webサイトからダウンロードして、C:\ WINDOWS \ system32にインストールしています。

    In_content_1all:[300x250] / dfp: [640x360]->

    NSSMを使用してWindowsサービスを作成する

    この例では、PowerShellスクリプト からサービスを作成してログに記録しますCPUの平均負荷率

    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. Path:フィールドの横にある省略記号ボタンをクリックし、powershell.exeに移動します。 >これは通常C:\ Windows \ System32 \にあります。 powershell.exeを選択します。 パス:フィールドとスタートアップディレクトリ:フィールドは自動的に入力されます。
          1. 引数:フィールドに次のように入力します:-ExecutionPolicy Bypass -NoProfile -File“ C:\ PathToScript \ get-Script.ps1”、ここで最後の部分はパスですPowerShellスクリプトとスクリプト名に。
            1. 詳細 strong>タブを選択します。 [表示名:]フィールドに、Windowsサービスマネージャーに表示するサービスの内容を入力します。次に、説明:フィールドに機能を入力します。 起動タイプ:は、自動自動(遅延開始)手動、またはに設定できます。無効。この演習では、自動が適しています。
              1. ログオンタブを選択します。 [このアカウント:]ラジオボタンを選択し、サービスを実行するアカウントとパスワードを入力します。サービスを実行するアカウントを選択する必要があります。理想的には、このサービスを実行するためだけにWindowsアカウントを作成します。このアカウントの権限は、サービスが実行する必要があるものだけに制限する必要があります。 ローカルシステムアカウントを選択できますが、セキュリティ上の理由からお勧めしません。

                カスタマイズに使用できるタブは他にもいくつかあります。サービス。この演習では、これらのタブのデフォルト値で十分です。 サービスのインストールボタンを選択します。

              2. サービスがインストールされると、サービス「logCPUAvg」が正常にインストールされたことがわかります。ウィンドウ。 OKを選択して閉じます。これでインストールは完了です。
                1. Windows Services Managerを開き、サービスが存在することを確認します。
                  1. サービスを実行して実行されることを確認します。
                    1. このサービスが実行されていることを確認するには、ファイルエクスプローラーを使用して、ログが保存されるはずの場所に移動し、ログが存在するかどうかを確認します。
                    2. nssm-check-log.png

                      Windowsサービスの削除NSSMを使用すると

                      おそらくCPUを監視する をロードする必要がなくなったので、サービスを削除したいと思います。幸いなことに、NSSMはそれを簡単にします。

                      1. Windowsサービスマネージャーで、サービスを停止します。これを行うには、ログCPU平均負荷サービスを選択してから、ツールバーの四角い停止ボタンまたは左側のサービスの停止リンクを選択します。
                        1. WindowsコマンドプロンプトまたはPowerShellのいずれかを管理者として開きます。
                        2. コマンドnssm remove logCPUAvgを入力して、コマンドを実行します。
                          1. NSSMは確認を求めます。 はいを選択します。
                            1. サービスが削除されると、サービス「logCPUAvg」が表示されます。 」が正常に削除されました。確認。 OKを選択すれば完了です。
                            2. 以上です。サービスマネージャをチェックして、サービスが存在しないことを確認することをお勧めします。それでもサービスが表示される場合は、画面を更新する必要があり、表示されなくなるはずです。

                              サービスは、常に実行する必要のあるアプリやスクリプトを実行し、失敗した場合は自動的に再起動するための優れた方法です。 、または現在のユーザーとは異なる権限が必要です。これらすべてを行うためにアプリやスクリプトが必要ない場合は、代わりにスケジュールされたタスクの使用 を検討してください。

                              関連記事:


                              12.11.2020