PowerShellスクリプトをWindowsサービスに変換する(ps1からサービスへ)

PowerShellは管理分野で非常に優れた働きをすることは周知の事実です。しかし、ps1スクリプトをサービスとして実行する必要がある場合もあります。PowerShellは当初、自動化とシステム管理のツールとして設計されたため、ネイティブではサービスモード(PowerShell to Service)で動作することはできません

この制限は、Windows Server 2025上でバックグラウンド監視スクリプト、自動クリーンアップタスク、あるいは長時間実行されるPowerShellプロセスが必要な場合、特にサービスが自動的に起動し、ユーザーのログオフ後も存続することが期待される本番環境では、苛立たしいものとなる可能性があります。

幸いなことに、この問題は、任意の実行可能ファイル(またはスクリプト)をWindowsサービスとして実行できるようにするサードパーティ製ツールを使用することで解決できます。


EXEファイルをWindowsサービスとして実行するためのツール

実行可能ファイルをWindowsサービスに変換できるユーティリティは多数あります。例えば:

この記事では、EXE Serviceを使用します。これは、PowerShell用の完成済みの設定例を既に提供しており、GUIとコマンドラインの両方のサポートを備えているためです。


PowerShellスクリプトをWindowsサービスとして実行する

ステップ1: EXE Serviceを開く

EXE Serviceをインストールすると、デスクトップにショートカットが表示されます。

グラフィカルインターフェースは、サービスの作成を容易にするためのものです。
GUIなしのWindows Serverで作業している場合は、次の2つの選択肢があります:


ステップ2: 新しいサービスを作成する

EXE Serviceには、完成済みの PowerShell to Serviceの例 が既に含まれています。

「Create from example」(例から作成) ボタンをクリックするだけです。

PowerShellをサービスに変換


ステップ3: .ps1ファイルへのパスを設定する

表示されるウィンドウで、正しいパスを指定する必要があります:

パスが実際のPowerShellのインストール場所とスクリプトの場所に一致していることを確認してください。

PowerShell to Service 設定


ステップ4: サービスを保存して起動する

「Create service」(サービス作成) をクリックして、Windowsサービスを作成します。

このコンピューター上でサービスをすぐに実行したい場合は、「Start」(開始) をクリックします。

これにより、PowerShellスクリプトは以下のように動作します:


サービスを別のサーバーに転送する

サービス設定を別のWindows Serverに移動する予定がある場合は、公式のEXE Service転送手順(ドキュメントで提供されています)に従ってください。

このアプローチは、複数のサーバーに同一の設定を展開する場合に特に便利です。


結論

PowerShellはサービスとして構築されたものではありません — しかし、EXE Serviceのようなツールがこの問題をきれいに解決します。.ps1スクリプトをラップするだけで、起動時に起動し、ログオフ後も存続し、services.mscとシームレスに統合されます。面倒な回避策も、スケジュールタスクのハックも必要ありません。ただ単純明快で、管理者がすぐに使えるソリューションです。


EXE_Service.msiをダウンロードして、あらゆる.exeファイルを数秒でWindowsサービスに変換できます。