【保存版】PowerShellスクリプトを自動実行する方法

プログラミング・IT

PowerShellスクリプト(.ps1ファイル)は、Windowsシステム管理や自動化に非常に便利なツールです。

しかし、「毎回手動で実行するのは面倒」「定期的に自動実行したい」というニーズも多いでしょう。

この記事では、PowerShellスクリプトを自動実行するための3つの代表的な方法を、わかりやすく解説します。

目的に合わせて最適な方法を選んでください。

スポンサーリンク

方法①:タスクスケジューラで時間指定して自動実行

タスクスケジューラを使えば、指定した時間や条件でPowerShellスクリプトを自動実行できます。

定期的なバックアップやメンテナンス作業に最適です。

使いどころ

  • 毎日特定の時間に実行したい
  • 週に1回のデータ集計を自動化したい
  • システム起動から一定時間後に実行したい

設定手順(Windows 10/11共通)

  1. タスクスケジューラを起動する
    • Windowsキー + S → 「タスクスケジューラ」と入力して検索結果から選択
  2. 新しいタスクを作成する
    • 右側のアクションパネルから「基本タスクの作成」をクリック
  3. タスクの基本情報を入力
    • タスク名(例:「毎日のログバックアップ」)
    • 説明(任意)を入力して「次へ」
  4. 実行するタイミングを設定
    • 「毎日」「毎週」「月単位」など適切なトリガーを選択
    • 開始時刻や頻度を設定して「次へ」
  5. 実行するアクションを設定
    • 「プログラムの開始」を選択して「次へ」
  6. プログラムと引数を指定
    • プログラム/スクリプト欄に以下を入力: powershell.exe
    • 引数の追加欄に以下を入力: -ExecutionPolicy Bypass -File "C:\Scripts\YourScript.ps1"
    • 「C:\Scripts\YourScript.ps1」は実際のスクリプトのパスに置き換えてください
  7. 設定を確認して「完了」をクリック

高度なオプション

タスクの「プロパティ」画面で、以下のような詳細設定も可能です:

  • 「最上位の特権で実行する」にチェックを入れると管理者権限で実行
  • 「ユーザーがログオンしているかどうかにかかわらず実行する」を選択すると、バックグラウンドで動作

方法②:Windowsログオン時に自動実行する

PCの起動時やユーザーのログイン時に特定のスクリプトを自動実行したい場合に便利です。

使いどころ

  • PCを起動するたびに環境をセットアップしたい
  • ログイン時に監視スクリプトを自動起動したい
  • 作業開始前の準備を自動化したい

設定手順

  1. バッチファイルを作成する
    • メモ帳などのテキストエディタを開く
    • 以下の内容を入力して保存: @echo offpowershell.exe -ExecutionPolicy Bypass -File "C:\Path\To\YourScript.ps1"
    • 「run_ps_script.bat」などの名前で保存(拡張子は.batに)
  2. スタートアップフォルダにショートカットを作成
    • Windowsキー + R → 「shell:startup」と入力して「OK」
    • スタートアップフォルダが開くので、作成したバッチファイルのショートカットをここに配置

これにより、Windowsにログオンするたびに自動的にスクリプトが実行されるようになります。

代替方法:レジストリを使う方法

より高度な設定をしたい場合は、Windowsレジストリの以下の場所にバッチファイルやスクリプトへのパスを登録することもできます:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

方法③:クリック一発で実行(バッチファイルでラップ)

PowerShellスクリプトをダブルクリックで簡単に実行できるようにする方法です。

非技術者でも使いやすくなります。

使いどころ

  • 一般ユーザーにもスクリプトを簡単に実行してもらいたい
  • 毎回PowerShellを起動して実行する手間を省きたい
  • 複数のスクリプトを順番に実行したい

設定手順

  1. バッチファイルを作成
    • 以下の内容のバッチファイル(.bat)を作成:
      @echo offecho スクリプトを実行しています...powershell.exe -ExecutionPolicy Bypass -File "C:\Path\To\YourScript.ps1"echo 完了しました!pause
  2. わかりやすい場所に配置
    • 作成したバッチファイルをデスクトップやわかりやすいフォルダに配置
    • 必要に応じてアイコンを変更したり、名前をわかりやすくしたりする

これで、バッチファイルをダブルクリックするだけでPowerShellスクリプトが実行されるようになります。

最後のpauseコマンドにより、実行完了後もウィンドウが閉じずに結果を確認できます。

実行ポリシーについての注意事項

PowerShellには、セキュリティのために「実行ポリシー」という仕組みがあります。

これにより、スクリプトの実行が制限される場合があります。

現在の実行ポリシーを確認

PowerShellを開いて以下のコマンドを実行します:

Get-ExecutionPolicy

一時的にポリシーを回避する方法

スクリプト実行時に-ExecutionPolicy Bypassパラメータを使用すると、現在の設定を変更せずにポリシーを回避できます:

powershell.exe -ExecutionPolicy Bypass -File "C:\Path\To\script.ps1"

恒久的にポリシーを変更する方法(管理者権限が必要)

Set-ExecutionPolicy RemoteSigned

セキュリティ上の理由から、UnrestrictedBypassに設定することは推奨されません。
可能な限りRemoteSignedを使用してください。

まとめ:PowerShellスクリプト自動実行方法の比較

方法主な用途メリット注意点
タスクスケジューラ定期実行、特定時間に実行細かいスケジュール設定可能
GUI操作で設定可能
設定が少し複雑
管理者権限が必要な場合あり
スタートアップ登録ログオン時に自動実行設定が簡単
ユーザー単位で制御可能
PCを再起動しないと実行されない
実行順序の制御が難しい
バッチファイルダブルクリックで実行ユーザーフレンドリー
複数のスクリプトを連携可能
手動操作が必要
自動実行ではない

目的や頻度に応じて、最適な方法を選択してください。

また、重要なシステムやセキュリティに関わるスクリプトの場合は、適切なエラーハンドリングとログ記録を組み込むことをお勧めします。

コメント

タイトルとURLをコピーしました