今Digdagを使用している環境がWindowsなので、digdagでPowerShellを実行したいという場合もあるかと思います。
デフォルトではPowerShellで実行されているように設定されていないため、以下の記事を参考に設定してみます。
使用するworkflowファイルは以下の記事で使用したサンプルを流用します。
www.capybara-engineer.com
実施作業
workflowファイル修正・実行
まずはPowerShell設定せずに実行してみます。
元のworkflowファイルは以下の内容になっています。
timezone: UTC
+setup:
echo>: start ${session_time}
+disp_current_date:
echo>: ${moment(session_time).utc().format('YYYY-MM-DD HH:mm:ss Z')}
+repeat:
for_each>:
order: [first, second, third]
animal: [dog, cat]
_do:
echo>: ${order} ${animal}
_parallel: true
+teardown:
echo>: finish ${session_time}これに以下のPowerShellのコマンドを実行する処理を追加します。
+date: sh>: Get-Date -Format G
修正したworkflowファイルをdigdagサーバにアップロードします。
# digdag push [digdagサーバ上のプロジェクト名] --project [ファイルが格納されているディレクトリ名]

修正したworkflowがサーバにアップロードされました。
これで実行してみます。

エラーで失敗しました。

workflowファイル修正(2回目)・実行
次はPowerShellで実行されるように設定してアップロードします。
timezone: UTC
_export:
sh:
shell: ["powershell.exe", "-"]
+date:
sh>: Get-Date -Format G
+setup:
echo>: start ${session_time}
+disp_current_date:
echo>: ${moment(session_time).utc().format('YYYY-MM-DD HH:mm:ss Z')}
+repeat:
for_each>:
order: [first, second, third]
animal: [dog, cat]
_do:
echo>: ${order} ${animal}
_parallel: true
+teardown:
echo>: finish ${session_time}
アップロードを確認して、実行してみます。

今度は成功しました。

digdagのログを見ても正常に実行されていることが確認できました。

感想及び所感
以下のドキュメントにある通り、デフォルトではShellコマンドとして実行されるため、Windows PowerShellで実行する場合はsh変数を再定義して、PowerShell.exeで実行されるように変更する必要があります。
docs.digdag.io
WindowsでDigdagを使用する場合は、コマンドをラップして実行する、といったことがあると思うので、覚えていて損はないと思います。