はじめに
Windowsでより強い権限を持った操作をコマンドを利用して行う時はWindows PowerShellを利用する場合があるが、これはPythonで普段利用するsubprocess
ライブラリではサポートされていない。当記事では、PythonでWindows PowerShellのコマンドを利用する方法について簡単に解説する。
実装
PowerShellのコマンドは先ほども述べたように、subprocess
では利用できないので、ビルトインのos.system
を利用する。
os.system("powershell -Command 実行したいPowerShellコマンド")
このようにすることでPowerShellコマンドを実行することができる。具体的な例については下記で示している。
実装例1 - 日時の取得
現在時刻を取得するPowerShellコマンドを実行
os.system("powershell -Command Get-Date")
実行結果
2021年5月28日 19:44:54
実装例2 - タスク登録
Windowsのタスクスケジューラーにタスクを登録するPowerShellコマンドを実行
def register_task(task_name, batch_path):
ps_cmd = f"schtasks /create /tn {task_name} /tr {batch_path} /sc onlogon /delay 0000:30 /rl highest"
os.system(f"powershell -Command {ps_cmd}")
if __name__ == "__main__":
register_task("test-task", r"C:\Users\~~~\~~~.bat")
実行結果
成功: スケジュール タスク "test-task" は正しく作成されました。
PowerShellコマンドの詳細については解説を省略するが、一応これで任意のバッチファイル(フルパス指定)をログオン時に起動するというタスクを登録することができる。
注意点
上記の例も含め、一部の権限が必要なPowerShellコマンドを実行する場合は、スクリプトを管理者権限で実行する必要がある。