2017-05-24 6 views
-1

私は32ビットのpowershellで動作するスクリプトがあります。私は、実行時に32または64ビットのPowerShellで動作しているかどうかを判断し、64ビットの場合は32ビットに動的に切り替える必要があります。基本的には動的に64ビットから32ビットのpowershellに切り替える

の正反対の[この] [1]

if ($env:PROCESSOR_ARCHITEW6432 -eq "AMD64") { 
write-warning "Y'arg Matey, we're off to 64-bit land....." 
if ($myInvocation.Line) { 
    &"$env:WINDIR\sysnative\windowspowershell\v1.0\powershell.exe" -NonInteractive -NoProfile $myInvocation.Line 
}else{ 
    &"$env:WINDIR\sysnative\windowspowershell\v1.0\powershell.exe" -NonInteractive -NoProfile -file "$($myInvocation.InvocationName)" $args 
} 
exit $lastexitcode 
} 

しかし、私はこれを逆にする方法を見つけ出すことはできませんいくつかの理由があります。助けてください。

+0

あなたが期待しています私たちはこのサイトを離れ、あなたが求めているものを見るために別の場所に行くことができます。これはこのサイトの仕組みではありません。あなたがここで働いていないコードを質問自体に投稿し、そのコードに関連する特定の質問をしてください。 –

+0

[このStackOverflowの質問](https://stackoverflow.com/questions/8588960/determine-if-current-powershell-process-is-32-bit-or-64-bit)が役立つかもしれません。 –

+0

@KenWhite私はこれがルールに反していることを知らなかった。あなたに非常に不便を感じて申し訳ありません。 – Thomas

答えて

0
if([IntPtr]::size -eq 8) { 
    Write-Host "Switching to 32bit..." 
    if ($myInvocation.Line) { 
     &"$env:WINDIR\SysWOW64\windowspowershell\v1.0\powershell.exe" -NonInteractive -NoProfile $myInvocation.Line 
    }else{ 
     &"$env:WINDIR\SysWOW64\windowspowershell\v1.0\powershell.exe" -NonInteractive -NoProfile -file "$($myInvocation.InvocationName)" $args 
    } 
    exit $lastexitcode 
} 
2

64ビットシステム上のPowerShellの32ビット版は、64ビットシステム上で実行されているのであれば、テスト

$env:WINDIR\syswow64\windowspowershell\v1.0\powershell.exe 

に常駐:

if ([Environment]::Is64BitProcess) { 
    write-warning "Switching to 32-bit.PowerShell." 
    if ($myInvocation.Line) { 
    &"$env:WINDIR\syswow64\windowspowershell\v1.0\powershell.exe" -Non -NoP -NoL $myInvocation.Line 
    }else{ 
    &"$env:WINDIR\syswow64\windowspowershell\v1.0\powershell.exe" -Non -NoP -NoL -file "$($myInvocation.InvocationName)" $args 
    } 
    exit $lastexitcode 
} 
関連する問題