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}  
  }  
}