タスクスケジューラでのジョブ実行時にPowershellコンソールを開く

ソフトウェア

タスクスケジューラでスクリプトを記載したps1ファイルをジョブ実行しました。

PS1ファイルとはWindows Powershellで使われるスクリプトファイルで、Powershellコマンドを記述して実行が可能です。

タスクスケジューラ上のステータスは実行完了になったため処理が実行されたと思ったのですが、psコマンドで起動中のプロセスを見ると実際には実行されてませんでした。

記載したスクリプトはaws cli syncの処理で1週間近くかかる見込みであったため、起動中のプロセスにないのは正しく動作していないことを意味します。

タスクスケジューラでaws cliコマンドは実行できないのか、awsの認証をPS1ファイル内でしなければいけないのか、PS1ファイルが実は動いていないのではないかなど、原因特定ではまり時間をかけしまいましたが理由は簡単でした。

syncコマンドのソースとなるディレクトリにアクセスできていなかっただけでした。

タスクスケジューラでのジョブ実行時にPowershellコンソールを表示するよう設定したら、エラーメッセージが出ており一瞬で解決しました。

私は調子に乗り出すと、私が設定した部分は出来ているはずで設定が足りないからエラーが起きるという考えに固執するくせがあり、反省しています。

まずログを見るというは基本中の基本です。

タスクスケジューラでのジョブ実行時にPowershellコンソールを開く方法を記載しておきます。

タスクスケジューラでのジョブ実行時にpowershellコンソールを開く

powershellコンソールを開く設定をする前に、タスクスケジューラでのPS1ファイルのジョブ実行の設定方法が分からない方がいるかもしれないため、設定方法を記載しておきます。

タスクスケジューラでPS1ファイルのジョブ実行の設定をする

タスクスケジューラを起動してください。

Cortanaの検索窓でタスクスケジューラと打つと出てくるためクリックします。

タスクスケジューラが起動したらタスクスケジューラライブラリをクリックします。

クリックすると右側に基本タスクの作成と出てくるためクリックします。

名前と説明に任意の文字を記入し、次へをクリックします。

ジョブ実行タイミングを選択し次へをクリックします。

ここでは毎日を選択しておきます。

1日における開始時間を設定し次へをクリックします。

プログラムの開始を選択し次へをクリックします。

プログラム/スクリプトには下記を入力します。

C:¥Windows¥System32¥WindowsPowerShell¥v1.0¥powershell.exe

powershell.exeはpowershellの実行ファイルです。

引数の追加には実行するps1ファイルを入力します。

-ExecutionPolicy Bypass C:¥Desktop¥test.ps1

-ExcutionPolicy Bypassを指定するとセキュリティ上の警告を表示せずにスクリプトを実行できます。

入力できたら次へをクリックしてください。

完了をクリックしてps1ファイルのジョブ実行の設定完了です。

タスクスケジューラでのジョブ実行時にpowershellコンソールを開く設定をする

タスクスケジューラでのジョブ実行の設定ができたので、powershellコンソールを開くようにする設定をします。

ただ、設定すると言っても1つ設定を変更するだけです。

タスクスケジューラを起動し該当のジョブを開きます。

全般タブのセキュリティオプションでユーザーがログオンしているときのみ実行するを選択します。

以上で完了です。

あとは実行してみれば実行と同時にpowershellコンソールが開きます。

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