見出し画像

タスクスケジューラでPoweshellファイルを実行する方法<設定例>

タスクスケジューラーでPoweshellファイルを実行するときのメモです。

基本形

 Cドライブ直下にフォルダ「スクリプト」があって、その中にファイル「TEST.ps1」がある。この「TEST.ps1」をタスクスケジューラで実行したいとき

タスクスケジューラーの操作の編集のところで
 プログラム/スクリプト powershell
 引数の追加  -ExecutionPolicy Bypass C:\スクリプト\TEST.ps1
 開始 c:\スクリプト
と設定すると実行できる

もう少し具体的な例

 毎日12時にメッセージ表示するスクリプトを定期的に実行する例で説明します。

1.Cドライブ直下にフォルダ「スクリプト」を作りその中に
下のコードをコピー&ペーストしてファイル名「TEST.ps1」で保存します。

# デスクトップ通知 メッセージを表示
$bodyText = 'A single string wrapped across a maximum of three lines of text.'
$ToastText01 = [Windows.UI.Notifications.ToastTemplateType, Windows.UI.Notifications, ContentType = WindowsRuntime]::ToastText01
$TemplateContent = [Windows.UI.Notifications.ToastNotificationManager, Windows.UI.Notifications, ContentType = WindowsRuntime]::GetTemplateContent($ToastText01)
$TemplateContent.SelectSingleNode('//text[@id="1"]').InnerText = $bodyText
$AppId = '{1AC14E77-02E7-4E5D-B744-2EB1AE5198B7}\WindowsPowerShell\v1.0\powershell.exe'
[Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier($AppId).Show($TemplateContent)

2.次の手順でタスクスケジューラを立ち上げます。
 →[Windows]+[R]キーで[ファイル名を指定して実行]ダイアログを表示して「taskschd.msc」と入力して[Enter]キーを押す

3.タスクの作成
 画面右側の「タスクの作成」をクリック。

全般タブが開いているので
名前に「定期実行テスト」と入力して
「トリガー」タブをクリック

トリガータブ:
 「新規」ボタンをクリックしてトリガーの設定画面を呼び出します。

新しいトリガー画面:
 「毎日」を選択して開始時間を「12:00:00」にします。日付は今日にしておきます。それぞれ設定したらOKボタン

操作タブをクリックして操作設定画面へ移動。

「新規」ボタンを押します。

新しい操作画面:
それぞれ設定項目に入力します
 操作:「プログラムの開始」
 プログラム/スクリプト:powershell
 引数の追加:-ExecutionPolicy Bypass C:\スクリプト\TEST.ps1
 開始:c:\スクリプト

入力したらOKボタン

ここまで出来たらOKボタンを押します。


すると
この画面が毎日12時にでます。


上手くいかない場合

 全般タブの「最上位の特権で実行する」にチェックを入れてみてください。



コマンドでもできる

PowerShellのコマンドでタスクスケジューラーに登録する

#正午に実行
$Trigger = New-ScheduledTaskTrigger -Once -at 12:00

#PowerShellスクリプト C:\スクリプト\TEST.ps1 を実行する
$Action = New-ScheduledTaskAction -Execute "powershell" -Argument "-ExecutionPolicy Bypass C:\スクリプト\TEST.ps1"

#実行後5分経ったらタイムアウト
$Settings = New-ScheduledTaskSettingsSet -ExecutionTimeLimit (New-TimeSpan -Minutes 5)

#タスク名「定期実行テスト」 最上位の特権で実行
Register-ScheduledTask -TaskName "定期実行テスト" -RunLevel Highest -Trigger $Trigger -Action $Action -Settings $Settings

同じタスクを上書きする場合はset-ScheduledTaskを使う

set-ScheduledTask -TaskName "定期実行テスト" -Trigger $Trigger -Action $Action -Settings $Settings

無効化するには

Disable-ScheduledTask "定期実行テスト"
#または
Get-ScheduledTask -TaskName "定期実行テスト" | Disable-ScheduledTask

有効化するには

Enable-ScheduledTask "定期実行テスト"
#または
Get-ScheduledTask -TaskName "定期実行テスト" | Enable-ScheduledTask

実行する

Start-ScheduledTask "定期実行テスト"
#または
Get-ScheduledTask -TaskName "定期実行テスト" | Start-ScheduledTask

終了する

Stop-ScheduledTask "定期実行テスト"
#または
Get-ScheduledTask -TaskName "定期実行テスト" | Stop-ScheduledTask

削除する ★★危険★★危険★★

Get-ScheduledTask -TaskName "定期実行テスト" | Unregister-ScheduledTask

タスク名の指定なしでUnregister-ScheduledTaskを実行すると全部消してしまうのでGet-ScheduledTask -TaskName "定期実行テスト" で絞り込んでパイプ処理して削除します。

削除するときのYはい Nいいえを無視する場合「-Confirm:$false」を付けます。
無条件で削除する場合 ★★危険★★危険★★

Get-ScheduledTask -TaskName "定期実行テスト" | Unregister-ScheduledTask test -Confirm:$false


#Poweshell #プログラミング学習 #タスクスケジューラ #Windows #キッティング #自動化 #業務自動化

この記事が気に入ったらサポートをしてみませんか?