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サービスを取得する方法でした。
コメント