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

コンピューターにログインしているかどうかに関係なく、実行を継続するためにアプリまたはスクリプトが必要になる場合があります。おそらく、ホームネットワーク上のページをホストしている(web server hosting a page on your home network)ポートまたはWebサーバーを監視するためのPowerShellスクリプト(PowerShell script to monitor ports)です。

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

Windowsサービスを作成するには何が必要ですか?(What Do I Need to Create a Windows Service?)

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

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

吸わないサービスマネージャーとは何ですか?(What Is the Non-Sucking Service Manager?)

はい、説明せずにそのような名前をドロップすることはできません。確かに名前は残念ですが、正確です。Non-Sucking Service ManagerNSSM )は、信頼性と構成性の両方を備えたWindowsサービスを作成するための最も簡単な方法です。さらに、無料のオープンソースソフトウェア(Open Source Software)(OSS)です。

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

NSSMは、Webサイトからダウンロード(download NSSM from the website)するか、GitからNSSMのクローンを作成(clone NSSM from Git)するか、Chocolateyを使用してNSSMをインストールでき(install NSSM with Chocolatey)ます。ChocolateyはWindows用のパッケージマネージャーです(Chocolatey is a package manager for Windows)インストール(Installation)方法は、使用するルートによって異なります。NSSMの指示を参照してください。(Please)この例では、NSSM Webサイトからダウンロードして、 (NSSM)C:\WINDOWS\system32にインストールしています。

NSSMを使用してWindowsサービスを作成する(Create a Windows Service With NSSM)

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

  1. このスクリプトをコピーして、log-CPULoadPercentage.ps1として、他の人がアクセスする可能性が低い場所に保存します。ディレクトリC:/Scripts を作成してそこに保存してみてください。また、スクリプトに(Scripts)Logsというフォルダを作成します。スクリプトへのパスは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コマンドプロンプト(Windows Command Prompt)またはPowerShellのいずれかで実行できます。管理者として開き(Open it as Administrator)ます。
  2. コマンドnssminstalllogCPUAvgを(nssm install logCPUAvg)入力して、実行します。NSSMサービスインストーラ(NSSM service installer)ウィンドウが開きます。

  1. [(Click)パス:](Path:)フィールドの横にある省略記号ボタンをクリックし、通常はC:\Windows\System32\powershell.exeに移動します。powershell.exeを選択します。[パス:(Path:) ]フィールドと[スタートアップディレクトリ:](Startup directory:)フィールドに自動的に入力されます。

  1. [引数:](Arguments:)フィールドに次のように入力します-ExecutionPolicy Bypass -NoProfile -File “C:\PathToScript\get-Script.ps1”PowerShellスクリプトへのパスとスクリプト名です。  

  1. [詳細(Details)]タブを選択します。[表示名:](Display name: )フィールドに、 Windows サービス(Services)マネージャーに表示するサービスの内容を入力します。次に、[説明:](Description:)フィールドにその機能を入力します。起動タイプ:(Startup type: )自動(Automatic)自動(遅延開始)(Automatic (Delayed Start))手動(Manual)、または無効(Disabled)に設定できます。この演習では、自動(Automatic)が適しています。

  1. [ログオン(Log on )]タブを選択します。[このアカウント(This account):]ラジオボタンを選択し、サービスを実行するアカウントとパスワードを入力します。サービスを実行するアカウントを選択する必要があります。理想的には、このサービスを実行するためだけにWindowsアカウントを作成する必要があります。このアカウントの権限は、サービスが実行する必要があるものだけに制限する必要があります。ローカルシステムアカウント(Local System account)を選択できますが、セキュリティ上の理由からお勧めしません。

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

  1. サービスがインストールされると、Service “logCPUAvg” installed successfully! 窓。[ OK]を選択して閉じます。これでインストールは完了です。

  1. Windowsサービスマネージャー(Windows Services Manager )を開き、サービスがそこにあることを確認します。

  1. サービスを実行(Run)して、確実に実行されるようにします。

  1. このサービスが実行されていることを確認するには、ファイルエクスプローラー(File Explorer )を使用して、ログが保存されるはずの場所に移動し、ログが存在するかどうかを確認します。

nssm-check-log.png

NSSMを使用したWindowsサービスの削除(Removing a Windows Service With NSSM)

たぶん、あなたはもうあなたのCPU負荷を監視する(monitor your CPU)必要がないので、あなたはサービスを取り除きたいです。幸いなことに、NSSMはそれを簡単にします。 

  1. Windowsサービスマネージャー(Windows Services Manager)で、サービスを停止します。これを行うには、[CPU平均負荷のログ](Log CPU Average Load )サービスを選択してから、ツールバーの四角い停止ボタンまたは左側の[サービスの停止]リンクを選択します。(Stop the service)

  1. 管理者としてWindowsコマンドプロンプト(Windows Command Prompt )またはPowerShellのいずれかを開きます。
  2. コマンドnssmremovelogCPUAvgを(nssm remove logCPUAvg)入力して、コマンドを実行します。 

  1. NSSMは確認を求めます。[はい](Yes)を選択します。

  1. サービスが削除されると、Service “logCPUAvg” removed successfully! 確認。[ OK]を選択すると、完了です。

それで全部です。サービスマネージャーをチェックして、サービスが存在しないことを確認することをお勧めします。それでもサービスが表示される場合は、画面を更新する必要があり、表示されなくなるはずです。

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



About the author

私は Windows 10 の技術者であり、長年にわたって個人や企業が新しいオペレーティング システムを活用できるよう支援してきました。外観をカスタマイズしたり、さまざまなユーザー向けにアプリケーションをパーソナライズする方法など、Microsoft Office に関する豊富な知識があります。さらに、Explorer アプリを使用して、コンピューター上のファイルやフォルダーを探索および検索する方法も知っています。



Related posts