0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WindowsタスクスケジューラでのPowerShellスクリプト実行

Last updated at Posted at 2025-10-02

【経緯】
 Windowsタスクスケジューラを使ってPowerShellスクリプトファイルを定期実行する
 バッチ処理を作成していました。
 今回、下記の【改修依頼】によって、バッチ処理を追加することとなり、
 [改修①]を実施後、動作確認を行ったが想定通りの動作にはなりませんでした。
 そこで、想定通り動かなかった2か所について、原因とどう修正したか、共有します。

【改修依頼】
 ・既存のバッチ処理を別のグループでも利用したい
 ・バッチ処理によって出来上がるファイル名をグループごとに分けて出力してほしい
 (ファイル名で判断できるようにしたい)

【改修内容】
 [改修前]
  ■既存バッチ処理:AAグループ(Groupcode:001)のデータを取得して、
   dataフォルダに「data_YYYYMMDD.csv」を作成
   image.png
 [改修①:NG動作] 
  ■既存バッチ処理:AAグループ(Groupcode:001)のデータを取得して、
   dataフォルダに「data_001_YYYYMMDD.csv」を作成
   image.png
  ■追加バッチ処理:BBグループ(Groupcode:002)のデータを取得して、
   dataフォルダに「data_002_YYYYMMDD.csv」を作成
   image.png

 [改修①:原因]
image.png

 [改修②:OK動作]
  ■既存バッチ処理:AAグループ(Groupcode:001)のデータを取得して、
   dataフォルダに「data_001_YYYYMMDD.csv」を作成
   image.png
  ■追加バッチ処理:BBグループ(Groupcode:002)のデータを取得して、
   dataフォルダに「data_002_YYYYMMDD.csv」を作成
   image.png

 [改修②:理由]
image.png

【まとめ】
1.タスクスケジューラーの操作のプログラム開始コマンドについて
  ■-Command の場合
    ・コマンドラインで直接コマンドを実行する方式。
    スクリプトファイルのパスをコマンドとして扱うため、
    正しく動作しない可能性がある
    ・スクリプトパスにスペースや特殊文字が入っていると壊れやすい
    ・引数付きで実行したい場合面倒になる
    ・Powershellのバージョンアップやポリシー変更で動作が不安定になる可能性がある
  ■-NoProfile -ExecutionPolicy Bypass -File の場合
    ・スクリプトファイルを実行する標準的な方法。
    ファイルパスで指定されたスクリプトをそのまま実行
    ・-NoProfile:ユーザープロファイルを読み込まず、環境の影響を受けない
    ・-ExecutionPolicy Bypass:スクリプトの実行制限を回避
    ・-File:指定した .ps1 スクリプトを ファイルとして実行
     ※ -NoProfile と -ExecutionPolicy Bypass はセキュリティや安定性のためにほぼ必須
2.powershellコマンドでファイル名を変数を使って指定する方法について
  ■変数の展開は範囲を明確にするために${変数名}と記載することが安全
    ・特に変数の後ろに数字や英字が続く場合は、
    {}で囲まないと意図した文字列とならない可能性が高い

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?