PowerShell を使用して Windows サービスを管理する方法



PowerShell を使って Windows サービスにアクセスするのは、特に起動時の挙動をいじったり、スクリプトで微調整を加えたりしたい場合に便利です。理由はよく分かりませんが、グラフィカルなサービスマネージャー (services.msc) は、時々使いにくくなったり、動作が遅すぎたりすることがあります。PowerShell コマンドを使えば、UI を使わずにターミナルから直接操作できるので、自動化やトラブルシューティングの際の大きな助けになります。ちなみに、「自動(遅延開始)」を設定しようとしている場合、それはあくまでも GUI に登録された設定です。PowerShell は「自動」または「手動」の状態しか処理しません。

PowerShell で Windows サービスを管理する方法

サービスの無効化または有効化

サービスが自動起動し続ける場合、それを停止したい場合、最も簡単な方法は、再起動前にそのサービスのスタートアップの種類を「無効」に設定することです。Windows 10およびサーバーエディションを含むほとんどのWindowsバージョンで動作します。ただし、PowerShellではスタートアップの種類を変更しても成功メッセージは表示されないため、ご自身で状態を確認する必要があります。

Get-Service -Name "spooler" | Select-Object -Property Name, StartType Set-Service -Name "spooler" -StartupType Disabled Get-Service -Name "spooler" | Select-Object -Property Name, StartType 

このスニペットは、まずサービスのスタートアップの種類を確認し、「無効」に設定してから再度確認します。正直言って、これは少し奇妙です。成功の確認メッセージは表示されませんが、その後 StartType が「無効」と表示されれば成功です。マシンによっては、設定を変更した後、サービスの自動起動を完全に停止するには再起動が必要になる場合があります。

サービスを手動で停止する

サービスをすぐに停止したい場合(シャットダウンする前に)、次のコマンドを実行します。

Stop-Service -Name "spooler"

これにより、サービスは即座に終了しますが、再起動時にサービスが自動的に開始されるように設定されている場合、上記のように無効にするか、スタートアップの種類を変更する必要があることに注意してください。

サービスを手動または自動に設定する

これは、必要なときだけサービスを実行したい場合に便利です。例えば、手動に設定するには、次のようにします。

Set-Service -Name "spooler" -StartupType Manual

Windows で自動的に起動したい場合は、次のコマンドを実行します。

Set-Service -Name "spooler" -StartupType Automatic

注:PowerShellでは「自動(遅延開始)」を設定できません。これは依然としてGUIでの設定です。GUIで設定するか、レジストリ設定を調整する必要がありますが、これもまた面倒な作業です。

サービスの再開

サービスを無効化または停止し、手動で再度開始したい場合は、次のコマンドを実行します。

Start-Service -Name "spooler"

これにより、再起動せずに起動できます。スクリプトを記述している場合は、これらのコマンドを使用すると、GUIを操作せずにサービスを素早く切り替えることができます。

これらのコマンドは、Windowsサービスの管理をより迅速かつ柔軟にします。特に、作業を自動化したり、GUIの煩わしさを避けたい場合に便利です。ただし、Windowsが頑固にサービスの自動起動を続ける場合があるので、状況がおかしくなった場合は再起動するか、グループポリシー設定を確認する必要があるかもしれません。



この記事は役に立ちましたか?