![見出し画像](https://assets.st-note.com/production/uploads/images/114542507/rectangle_large_type_2_184bc01c5a44ba8af16fbf1c9989233c.png?width=1200)
タスクスケジューラで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]キーを押す
![](https://assets.st-note.com/img/1693134477588-ZOGQHZGlbh.png?width=1200)
3.タスクの作成
画面右側の「タスクの作成」をクリック。
全般タブが開いているので
名前に「定期実行テスト」と入力して
「トリガー」タブをクリック
![](https://assets.st-note.com/img/1693134569434-ynCL8eZLgv.png)
トリガータブ:
「新規」ボタンをクリックしてトリガーの設定画面を呼び出します。
![](https://assets.st-note.com/img/1693134958329-tkvsRGDoiG.png)
新しいトリガー画面:
「毎日」を選択して開始時間を「12:00:00」にします。日付は今日にしておきます。それぞれ設定したらOKボタン
![](https://assets.st-note.com/img/1693134738204-biJFyu2XT5.png)
操作タブをクリックして操作設定画面へ移動。
![](https://assets.st-note.com/img/1693135024726-jo3gtn8frv.png)
「新規」ボタンを押します。
新しい操作画面:
それぞれ設定項目に入力します
操作:「プログラムの開始」
プログラム/スクリプト:powershell
引数の追加:-ExecutionPolicy Bypass C:\スクリプト\TEST.ps1
開始:c:\スクリプト
![](https://assets.st-note.com/img/1693135189004-blebP8KYWA.png)
入力したらOKボタン
![](https://assets.st-note.com/img/1693135389073-BwILptSKJH.png)
ここまで出来たらOKボタンを押します。
すると
この画面が毎日12時にでます。
![](https://assets.st-note.com/img/1693135860374-9RAjibOOhT.png)
上手くいかない場合
全般タブの「最上位の特権で実行する」にチェックを入れてみてください。
![](https://assets.st-note.com/img/1693136194230-TBjKr12pBO.png)
コマンドでもできる
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 #キッティング #自動化 #業務自動化