Power Platform CommunityでPower Automate for desktop(PAD)で実行されるPowerShellのバージョンに関する質問がありました。
「PowerShell スクリプトの実行」アクション実行時の挙動を調べたところ、「powershell.exe」が実行されることが確認できたので、PowerShellに関してはシステムに依存しているものと推測できましたが、折角なので他のスクリプトアクションについても調べることにしました。
DOS コマンドの実行
適当なコマンド(今回はver)実行時の挙動を確認したところ、下記プロセスが実行されていました。
"cmd.exe" /c ver
コマンドプロンプトの「/c」オプションを使って、実行するコマンドを引数として渡しているようです。
VBScript の実行
下記スクリプトを実行してバージョンを確認してみました。
WScript.Echo ScriptEngineMajorVersion & "." & ScriptEngineMinorVersion & "." & ScriptEngineBuildVersion
結果は下図の通りで、Windows 11 Pro バージョン 21H2 環境では「5.8.16384」となっていました。PADからではなく直接スクリプトを実行した結果も同様です。
アクション実行中は下記プロセスが実行されており、cmd.exe経由でcscript.exeを実行し、「/E」オプションでVBScriptが指定されていることが確認できました。
"cmd.exe" /c ""C:\\Windows\\SysWOW64\\CScript.exe" //U //NoLogo //E:vbscript "C:\\Users\\***\\AppData\\Local\\Temp\\Robin\\***.tmp" 2> "C:\\Users\\***\\AppData\\Local\\Temp\\Robin\\***.tmp" > "C:\\Users\\***\\AppData\\Local\\Temp\\Robin\\***.tmp""
JavaScript の実行
下記スクリプトを実行してバージョンを確認してみました。
WScript.Echo(ScriptEngineMajorVersion() + "." + ScriptEngineMinorVersion() + "." + ScriptEngineBuildVersion());
結果は下図の通りで、Windows 11 Pro バージョン 21H2 環境では「5.8.16384」となっていました。PADからではなく直接スクリプトを実行した結果も同様です。
アクション実行中は下記プロセスが実行されており、cmd.exe経由でcscript.exeを実行し、「/E」オプションでJavaScript(JScript)が指定されていることが確認できました。
"cmd.exe" /c ""C:\\Windows\\SysWOW64\\CScript.exe" //U //NoLogo //E:javascript "C:\\Users\\***\\AppData\\Local\\Temp\\Robin\\***.tmp" 2> "C:\\Users\\***\\AppData\\Local\\Temp\\Robin\\***.tmp" > "C:\\Users\\***\\AppData\\Local\\Temp\\Robin\\***.tmp""
PowerShell スクリプトの実行
下記スクリプトを実行してバージョンを確認してみました。
Write-Output $PSVersionTable
結果は下図の通りで、Windows 11 Pro バージョン 21H2 環境ではPSVersionの値が「5.1.22000.282」となっていました。PADからではなく直接スクリプトを実行した結果も同様です。
アクション実行中は下記プロセスが実行されており、powershell.exeの「-File」オプションで一時的に作成された(と思われる)スクリプトファイルが実行されていることが確認できました。
"powershell.exe" -executionpolicy bypass -File "C:\\Users\\***\\AppData\\Local\\Temp\\Robin\\***.tmp.ps1"
Python スクリプトの実行
下記スクリプトを実行してバージョンを確認してみました。
import sys print(sys.version)
結果は下記の通りで、PAD バージョン 2.17.00232.22042 環境では「IronPython 2.7.9」となっていました。
恐らくCreateScriptSourceFromFileメソッドやCreateScriptSourceFromStringメソッドあたりでスクリプトを実行しているのではないでしょうか。
2.7.9 (IronPython 2.7.9 (2.7.9.0) on .NET 4.0.30319.42000 (64-bit))
PADのインストールフォルダを見てもIronPython関連のファイルが組み込まれていることが確認できます。
現時点(2022年3月)ではまだPython 2環境ですが、IronPython 3の安定板がリリースされればPython 3環境になるかもしれません。
2024/4/5 追記:
Power Automate for desktop(PAD) バージョン 2.43 で「Python スクリプトの実行」アクションに「Python のバージョン」オプションが追加され、Python 2環境で実行するかPython 3環境で実行するかを選べるようになりました。
PADのスクリプトアクションの実行環境を調べた結果、
- DOS、VBScript、JavaScript、PowerShell:システム依存
- Python:PAD組み込みのIronPython依存
であることが分かりました。
もちろん、今後のアップデートでガラリと変わる可能性もあるわけですが、少なくとも本記事執筆時点では上記のようになっているようです。
この記事へのコメントはありません。