PowerShellを使った定期・定時実行の徹底解説

PowerShellは非常に便利に使えます。

タスクスケジューラと組み合わせればいちいちコードの実行を指示する必要もなくなります。

Pythonなどのスクリプト言語と組み合わせれば非常に便利ですね。

ちなみにキャッシュや一時ファイル、ゴミ箱の内容を手動で削除するスクリプトを、最初にメモしておきます気が付いたときに実行してすっきりさせてから進めましょう。

# 一時ファイルの削除
Get-ChildItem "C:\Temp" -File | Remove-Item

# ゴミ箱のクリア
Clear-RecycleBin -Force

定期実行と設定

定期的にディスククリーンアップを自動化することも便利。

特に、システムやサーバーが長時間稼働する環境では、定期的にディスクの不要ファイルを削除することで、システムが正常に動作し続けるのを確保できます。

たとえば、1週間に1回や月に1回、定期的にディスククリーンアップを自動的に実行することで、ディスクスペースの管理がより効率的になります。

タスクスケジューラと組み合わせて実行するのが有効です。

PowerShellスクリプトの定時実行手順

1. タスクスケジューラを開く

  • Windowsのスタートメニューを開き、「タスクスケジューラ」と入力してタスクスケジューラを起動します。

2. 基本タスクの作成

  • 左側のパネルから「タスクスケジューラライブラリ」を選択。
  • 右側の「操作」パネルで**「基本タスクの作成」**をクリックします。

3. タスク名と説明を設定

  • タスク名と説明を入力します。例えば、"定期的なディスククリーンアップ"のような名前を設定します。
  • 「次へ」をクリック。

4. トリガー(スケジュール)を設定

  • ここでタスクの**トリガー(実行タイミング)**を設定します。

例えば、次のようなオプションがあります:

  • 毎日: 毎日特定の時間にスクリプトを実行する。
  • 毎週: 毎週特定の曜日(例:毎週月曜日や金曜日)にスクリプトを実行する。
  • 毎月: 毎月指定された日にスクリプトを実行する。

ここでは**「毎日」**を選択して、次に進みます。

5. スケジュールの詳細を設定

  • 開始日と時刻を設定します。例えば、「毎日朝9時に実行したい」といった設定を行います。

例:

  • 開始日: 2024/09/25
  • 時間: 09:00

※「繰り返し」オプションを使って、スクリプトを定期的に繰り返し実行できます。

6. 操作(アクション)を設定

  • タスクが実行されたときに行う「操作」を設定します。ここでPowerShellスクリプトを実行する設定を行います。
  1. **「プログラムの開始」**を選択して「次へ」。
  2. **「プログラム/スクリプト」**欄に次のようにpowershell.exeを入力します。
powershell.exe

その後、ファイルパスを指定してください。

PowerShellはpslファイルです。

powershell.exe -File "C:パス.ps1"

定期実行のオプション詳細

  • 毎日実行:
    • 例えば、毎日午前9時にディスククリーンアップスクリプトを実行するには、トリガーで「毎日」を選び、時間を09:00に設定します。
  • 毎週実行:
    • 毎週特定の曜日(例えば月曜日と金曜日の10:00)に実行したい場合は、トリガーで「毎週」を選択し、実行したい曜日にチェックを入れます。
    例:
    • 月曜日と金曜日の午前10時にディスククリーンアップスクリプトを実行するには、「毎週」を選択し、「月曜日」と「金曜日」にチェックを入れ、時間を10:00に設定します。

毎日午前9時にディスククリーンアップスクリプトを実行

トリガー: 毎日 午前9時に実行
操作: PowerShellを起動し、指定のスクリプト "C:ファイルを置いてあるパス.ps1" を実行

タスクスケジューラには次のコマンドを入力

powershell.exe -File "C:ファイルを置いてあるパス.ps1"

以下は、タスクスケジューラを使って週に1回自動的にディスククリーンアップを行う例です。

# 古い一時ファイル(30日以上)の削除
Get-ChildItem "C:\Temp" -File | Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-30) } | Remove-Item

# ゴミ箱のクリア
Clear-RecycleBin -Force

pslファイルとして、任意のパスから呼び出します。

タスクスケジューラの設定を解除

PowerShellを使った定期的なディスククリーンアップを解除(キャンセル)するには、2つのアプローチがあります。

それは、タスクスケジューラの設定を解除する方法です。以下に、具体的な手順を示します。

タスクスケジューラでのディスククリーンアップ解除方法

  1. タスクスケジューラを開く:
    • Windowsの検索バーで「タスクスケジューラ」と入力して、タスクスケジューラを開きます。
  2. タスクスケジューラライブラリを選択:
    • 左側のパネルで「タスクスケジューラライブラリ」をクリックします。ここに、作成したすべてのスケジュールタスクがリストされます。
  3. ディスククリーンアップ用のタスクを探す:
    • 「名前」の列で、ディスククリーンアップのために作成したタスクを見つけます。タスクの名前は、タスクを作成したときに付けたものです(例: “Disk Cleanup Task” など)。
  4. タスクの無効化または削除:
    • タスクを右クリックし、以下のいずれかの操作を選択します。
      • 「無効化」: タスクを一時的に無効化します。将来再び有効化することができます。
      • 「削除」: タスクを完全に削除します。これにより、そのタスクは二度と実行されません。

詳細な手順

1. 無効化する場合:

タスクを一時的に停止させ、後から再度有効にしたい場合、無効化を選びます。

  • 右クリックして**「無効化」**を選択するだけで、タスクが実行されなくなります。
  • 再度有効にしたい場合は、同じ場所で**「有効化」**を選択できます。

2. 完全に削除する場合:

タスクを完全に削除したい場合、削除を選択します。

  • 右クリックして**「削除」**を選択します。これでタスクが完全に消去され、二度と実行されません。

さらに詳しいポイント

  • スリープモード休止状態ではタスクは実行されません。ただし、タスクスケジューラには「スリープ解除してタスクを実行する」という設定があり、これを利用するとスリープ状態から復帰してタスクを実行することが可能です。
  • **Windowsが起動していない場合(PCがオフの状態)**では、タスクスケジューラはタスクを実行できません。

タスクスケジューラをスリープ解除して実行

もし、PCがスリープ状態になっていてもタスクを実行したい場合、スリープ解除して実行するようにタスクを設定できます。

1. タスクスケジューラでタスクのプロパティを開く

  • タスクスケジューラで、既に作成したタスクを右クリックし、**「プロパティ」**を開きます。

2. 「条件」タブを開く

  • 「条件」タブをクリックし、**「タスク実行時にコンピューターをスリープ解除する」**にチェックを入れます。

3. 設定を保存

  • 「OK」をクリックして設定を保存します。

これにより、PCがスリープしている状態でもタスクスケジューラがPCをスリープから解除し、指定されたタスクを実行します。

電源オフ状態での実行について

PCが完全にオフの場合、タスクスケジューラはタスクを実行できません。

タスクの実行には、Windowsが起動していることが必要です。

そのため、定期的に実行される重要なタスクがある場合は、PCが定期的にオンになっていることが前提となります。

PowerShellを便利に使う

Pythonファイルを定時実行する例です。

Pythonファイルを月曜日から金曜日の日本時間夕方17時に定時実行し、スリープ中でもスリープ解除して実行するように設定する例です。

1. タスクスケジューラを開く

  • Windowsのスタートメニューを開き、「タスクスケジューラ」と入力してタスクスケジューラを起動します。

2. 基本タスクの作成

  • タスクスケジューラの「操作」パネルで「基本タスクの作成」をクリックします。
  • 名前と説明を入力します(例:「Python」)。
  • 「次へ」をクリックします。

3. トリガー(スケジュール)の設定

  • **「毎週」**を選択し、「次へ」をクリックします。
  • 月曜日から金曜日にチェックを入れ、**「開始時間」を17:00(日本時間の17時)**に設定します。

4. 操作の設定(Pythonスクリプトを実行)

  • 「操作」では**「プログラムの開始」**を選択し、「次へ」をクリックします。
  • **「プログラム/スクリプト」**に、Pythonの実行ファイルのパスを指定します。通常、次のようになります:
C:\Users\User\AppData\Local\Programs\Python\Python312\python.exe

「引数の追加」**に、Pythonスクリプトのパスを指定します。

引数は必ずダブルクォーテーション " で囲むようにしてください。

"C:\Users\User\あなたのパス.py"

条件設定(スリープ解除の設定)

  • 「条件」タブをクリックします。
  • **「タスク実行時にコンピューターをスリープ解除する」**にチェックを入れます。

6. 設定の確認と完了

  • 設定内容を確認し、「完了」をクリックします。

これで、Pythonスクリプトが月曜日から金曜日の夕方17時に定時実行され、スリープ状態であってもPCがスリープ解除されて実行されます。

Author