PythonでWindowsサービスを取得する方法について。
この記事の内容はコチラです
- Pythonで「該当のWindowsサービスがあるか?」を取得する
- 「Windowsサービスのパスは?」を取得する
- 「Windowsサービスは稼働しているか?」を取得する
- psutilの使い方を知る
今回は、PythonでWindowsサービスを取得する方法を解説します。
Windowsサービスを取得する(psutil)
Pythonでは「psutil.win_service_get」を使って、Windowsサービスを取得したり、詳細を確認したりできます。「psutil」は事前にpipでインストールしてください。
すべてのWindowsサービスを取得する
import psutil # Windowsサービスをすべて取得する list(psutil.win_service_iter() #[結果] [<WindowsService(name='AdobeARMservice', display_name='Adobe Acrobat Update Service') at 2008017883712>, #[結果] <WindowsService(name='AJRouter', display_name='AllJoyn Router Service') at 2008017883768>, #[結果] <WindowsService(name='ALG', display_name='Application Layer Gateway Service') at 2008017883824>, #[結果] 以降省略
Windowsのサービスをすべて取得するには「psutil.win_service_iter」を使います。
Windowsサービスのサービス名(英語)、サービス表示名(日本語)がすべて取得できました。
Windowsサービスが存在するか?
import psutil
# Windowsサービスが存在するか?
psutil.win_service_get('SDRSVC')
#[結果] WindowsService(name='SDRSVC', display_name='Windows バックアップ')
psutil.win_service_get('aaa')
#[結果] NoSuchProcess: service 'aaa' does not exist)
Pythonで目的のWindowsのサービスが存在しているか?を確認するには「psutil.win_service_get」を使います。「win_service_get」の引数にサービス名の略称(英語)を指定します。
指定した名前のサービスが存在しない場合はエラーとなります。
Windowsサービスの詳細を取得する
import psutil
# Windowsサービスを取得
win = psutil.win_service_get('fhsvc')
dic = win.as_dict()
for key, item in dic.items():
print(key, item)
#[結果] display_name File History Service
#[結果] binpath C:\WINDOWS\system32\svchost.exe -k LocalSystemNetworkRestricted -p
#[結果] username LocalSystem
#[結果] start_type manual
#[結果] status stopped
#[結果] pid None
#[結果] name fhsvc
#[結果] description ユーザー ファイルをバックアップ場所にコピーして不慮の損失から保護します
Windowsのサービスの詳細情報を取得するには「psutil.win_service_get」を使います。
そのままでは扱いにくいので、辞書型に変換して1つずつサービス情報を取り出しました。
Windowsサービスのパスを取得する
import psutil
# Windowsサービスの実行パス
win = psutil.win_service_get('fhsvc')
win.binpath()
#[結果] C:\WINDOWS\system32\svchost.exe -k LocalSystemNetworkRestricted -p
Windowsのサービスの実行ファイルのパスを取得するには「psutil.win_service_get」の「binpath」を使います。
「binpath」で実行ファイルのパスを取得できました。
Windowsサービスの実行状態を取得する
import psutil
# Windowsサービスの実行状態
win = psutil.win_service_get('fhsvc')
win.status()
#[結果] running
win = psutil.win_service_get('ssh-agent')
win.status()
#[結果] stopped
Windowsのサービスが実行しているか停止しているかを取得するには「psutil.win_service_get」の「status」を使います。
statusの一覧
| running | 実行 |
| paused | 一時中断 |
| stopped | 停止 |
| start_pending | 開始中 |
| pause_pending | 一時中断が保留中 |
| continue_pending | 継続が保留中 |
| stop_pending | 停止中 |
「psutil」の詳細は本家ドキュメントを参照してください。
psutilドキュメント:https://psutil.readthedocs.io/en/latest/
これでPythonの「psutil.win_service_get」を使って、Windowsサービスの状態を取得することができました。
以上、Pythonの「psutil.win_service_get」でWindowsサービスを取得する方法でした。


コメント