PowerShellがエラーとなった場合にWinActorにて64bit PowerShellを実行する方法
以前にも回答で記載したのですが、WinActorは32bit版のPowerShellは起動できるのですが、
64Bit PowerShellをそのままでは起動できません。
64bitで起動できない場合、実行したコマンド結果が想定した結果を返さない事があります。
PowerShell単体の実行ではエラーとならないのにWinActorで実行するとエラーとなるので
原因が分からなく混乱されることが多いようです。
参考:
WinActorノートのシェルツールでPower Shellのコマンドが処理されない
「コマンド実行」ノードもまた然り。
以下の方法で確認可能です。
64bitで起動している場合の例(コマンドプロンプトでコマンド実行した例):
powershell -command [System.Environment]::Is64BitProcess
を実行し、64bitで起動しているので「True」が返ってきています。
WinActorで確認した例:
「コマンド実行」ノード
コマンド: 値⇒cmd
オプション:値⇒/c powershell -command [System.Environment]::Is64BitProcess
起動終了まで待つ(出力を受け取る) を選択
出力先変数名:(任意の変数)
出力結果を「待機ボックス」ノードで表示すると「False」を表示。
32bitで起動していることが分かります。
そこで、以下の様に記載して実行してみると、「True」が返ってきています。
コマンド: 値⇒cmd
オプション:値⇒/c %SystemRoot%\sysnative\WindowsPowerShell\v1.0\powershell.exe -command [System.Environment]::Is64BitProcess
起動終了まで待つ(出力を受け取る) を選択
出力先変数名:(任意の変数)
コマンド実行でPowershell(スクリプト含む)を実行する場合は、試してみてください。
WinActorノートのライブラリ修正は、先に記載した質問の回答にも記載していますが、
以下の行を2行目に追加。
cmd = “Start-Process C:\Windows\SysNative\WindowsPowerShell\v1.0\powershell.exe -ArgumentList ” & chr(34) & !コマンド! & chr(34)
以下の行を修正。
SetUmsVariable “$SET_ARGUMENT”, !コマンド!
↓
SetUmsVariable “$SET_ARGUMENT”, cmd
これで、64bit版PowerShellにてコマンド実行できるようになります。
参考まで。