PowerShellスクリプトをWindowsサービスに変換する(ps1からサービスへ)
PowerShellは管理分野で非常に優れた働きをすることは周知の事実です。しかし、ps1スクリプトをサービスとして実行する必要がある場合もあります。PowerShellは当初、自動化とシステム管理のツールとして設計されたため、ネイティブではサービスモード(PowerShell to Service)で動作することはできません。
この制限は、Windows Server 2025上でバックグラウンド監視スクリプト、自動クリーンアップタスク、あるいは長時間実行されるPowerShellプロセスが必要な場合、特にサービスが自動的に起動し、ユーザーのログオフ後も存続することが期待される本番環境では、苛立たしいものとなる可能性があります。
幸いなことに、この問題は、任意の実行可能ファイル(またはスクリプト)をWindowsサービスとして実行できるようにするサードパーティ製ツールを使用することで解決できます。
EXEファイルをWindowsサービスとして実行するためのツール
実行可能ファイルをWindowsサービスに変換できるユーティリティは多数あります。例えば:
- AlwaysUp
- NSSM (Non-Sucking Service Manager)
- WinSW
- SrvStart
- EXE Service
この記事では、EXE Serviceを使用します。これは、PowerShell用の完成済みの設定例を既に提供しており、GUIとコマンドラインの両方のサポートを備えているためです。
PowerShellスクリプトをWindowsサービスとして実行する
ステップ1: EXE Serviceを開く
EXE Serviceをインストールすると、デスクトップにショートカットが表示されます。
グラフィカルインターフェースは、サービスの作成を容易にするためのものです。
GUIなしのWindows Serverで作業している場合は、次の2つの選択肢があります:
- 通常のPC上でサービスを作成し、その後サーバーに転送する
- コマンドラインを使用してサーバー上で直接EXE Serviceを実行する
ステップ2: 新しいサービスを作成する
EXE Serviceには、完成済みの PowerShell to Serviceの例 が既に含まれています。
「Create from example」(例から作成) ボタンをクリックするだけです。

ステップ3: .ps1ファイルへのパスを設定する
表示されるウィンドウで、正しいパスを指定する必要があります:
- 実行可能ファイルへのパス:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe - 作業ディレクトリ:
スクリプトファイルが配置されているフォルダを指定します - 引数:
-ExecutionPolicy Bypass -File "C:\Path\To\Your\Script.ps1"
パスが実際のPowerShellのインストール場所とスクリプトの場所に一致していることを確認してください。

ステップ4: サービスを保存して起動する
「Create service」(サービス作成) をクリックして、Windowsサービスを作成します。
このコンピューター上でサービスをすぐに実行したい場合は、「Start」(開始) をクリックします。
これにより、PowerShellスクリプトは以下のように動作します:
- Windowsサービスとして実行される
- システム起動時に自動的に開始される
- ユーザーのログオフやセッションの変更後も存続する
- Windowsサービスマネージャー(
services.msc)を介して管理可能になる
サービスを別のサーバーに転送する
サービス設定を別のWindows Serverに移動する予定がある場合は、公式のEXE Service転送手順(ドキュメントで提供されています)に従ってください。
このアプローチは、複数のサーバーに同一の設定を展開する場合に特に便利です。
結論
PowerShellはサービスとして構築されたものではありません — しかし、EXE Serviceのようなツールがこの問題をきれいに解決します。.ps1スクリプトをラップするだけで、起動時に起動し、ログオフ後も存続し、services.mscとシームレスに統合されます。面倒な回避策も、スケジュールタスクのハックも必要ありません。ただ単純明快で、管理者がすぐに使えるソリューションです。