はじめに
コジマです。
業務で自動化できそうな作業があったので
Powershellでスクリプト組んでタスクスケジューラで定期的に実行しよう。
と思ったわけです。
普通のWindowsバッチで事足りればいいんですけど。
そうじゃないときはPowerShellが何とかしてくれる。と思いながら自動化に勤しんでおりますw
タスクスケジューラの沼にハマっちゃったんですよね。
タスクスケジューラでスクリプト実行するのは割と一筋縄ではいかないんです。
実際にどうするのか
タスクスケジューラの設定
タスクスケジューラを開きます。
自分の設定したタスクをダブルクリックして[操作]タブを開いて、スクリプト実行する操作を選択して
[編集]ボタンを押してください。
以下の点について確認します。
- [プログラム/スクリプト]を[C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe]とフルパスにしている
- [引数の追加]を[-Command “.\実行ファイル.ps1”]としている
- [開始]をスクリプトの存在するパスを指定している
上記のように設定しないとpowershell動きません。
https://docs.microsoft.com/ja-jp/powershell/scripting/whats-new/what-s-new-in-powershell-core-60?view=powershell-6
PowerShell6.0以降より
- バイナリ名がpowershell.exeからpwsh.exeに変更
- 位置指定パラメータが-Commandから-Fileに変更
上記の変更があります。
もし本記事記載の手順でうまくいかない場合、上記の変更に沿って読み替えた上で
再度試してみてください。
権限の設定
PowerShellを管理者で実行します。
コンソール画面が起動したら[Get-ExecutionPolicy]を実行してください。
[Restricted]が表示されていたら対応が必要です。
[Set-ExecutionPolicy RemoteSigned]を実行してください。
(※)各種権限の詳細が以下のサイトに記載があります。お好みの権限で設定してください。
ここではRemoteSignedとしました。
https://docs.microsoft.com/ja-jp/powershell/module/microsoft.powershell.security/set-executionpolicy?view=powershell-6#required-parameters
以上で実行できるようになります。
さいごに
この記事を面白いまたは役に立ったと思ってくれた方は是非私のTwitter(@kojimanotech)を
フォローしてくれたらうれしいです!
以上、コジマでした。