64ビットWindows上で32ビットのバッチファイルを実行する方法


以下の記事の内容により、PowerShell の実行ポリシーが Restricted であってもバッチファイルを経由することにより外部スクリプトを実行できることが分かりました。

しかし、バッチファイルで PowerShell のスクリプトを実行すれば当然64ビットで実行されてしまうため、以下の記事にある問題が発生してしまいます。

この記事では、バッチファイルを32ビットで実行する方法をご紹介します。

といっても対応は簡単でバッチファイルの先頭に以下のソースを追記するだけです。

@echo off
if "%PROCESSOR_ARCHITECTURE%" NEQ "x86" (
    C:\Windows\SysWOW64\cmd.exe /C %0
    exit
)

さらに実行ポリシーの問題を回避するようにすると、test.ps1 を実行するには以下のように記述することになります。

@echo off
if "%PROCESSOR_ARCHITECTURE%" NEQ "x86" (
    C:\Windows\SysWOW64\cmd.exe /C %0
    exit
)

powershell -NoProfile -ExecutionPolicy Unrestricted .\test.ps1

これで32ビットでバッチファイルを実行でき問題も発生しませんでした。

PowerShell で Access と連携しようとすると立ちふさがる問題だと思いますので参考にしてみてください。

■参考サイト