PowerShellスクリプトをx86で実行する
Autocad LTの自動実行に使うAcadRemoconがx86しかなくx64で普通に使おうとするとエラーになるので自動で環境判定してやればということで作った
スクリプトの最初に実行するとⅹ86で実行しなおされる。
環境変数$MyInvocation.PSCommandPathは実行時にしか取得されないのでデバッグでハマる。ついでにⅹ64のISEで開発してうっかりデバッグするとISEが終了してスクリプトが実行されたりした。
Function Start-Asx86{ <# .SYNOPSIS 実行時にⅹ86版PSで実行します。 .DESCRIPTION 32bit版しかないコンポ-ネントを使う場合などで実行時に環境を検査して64ビット環境であれば自身を32ビットで実行しなおします。 #> [CmdletBinding()] [OutputType([Void])] param() process{ #実行している環境が64ビット環境か、32ビット環境か判断し、64ビット環境であれば、32ビット環境で自身の再起動を試みる。 If([System.Environment]::Is64BitProcess){ #実行したファイルのパス $Path_Script = $MyInvocation.PSCommandPath #32ビット版PSのパス $Path_PSexe = $env:windir+'\sysWoW64\WindowsPowerShell\v1.0\powershell.exe' Start-Process -FilePath "$Path_PSexe" -ArgumentList "-file $Path_Script" Write-Host '32ビットへ移行' Start-Sleep -Seconds 3 exit } else{return} } }