Чтобы определить в своем скрипте, какую версию PowerShell вы используете, вы можете использовать следующие вспомогательные функции (любезно ответа ДжаредПара на связанный вопрос):
# Is this a Wow64 powershell host
function Test-Wow64() {
return (Test-Win32) -and (test-path env:\PROCESSOR_ARCHITEW6432)
}
# Is this a 64 bit process
function Test-Win64() {
return [IntPtr]::size -eq 8
}
# Is this a 32 bit process
function Test-Win32() {
return [IntPtr]::size -eq 4
}
Вышеуказанные функции используют тот факт, что размер System.IntPtr зависит от платформы. Это 4 байта на 32-битной машине и 8 байтов на 64-битной машине.
Обратите внимание, что стоит отметить, что расположение 32-разрядной и 64-разрядной версий Powershell несколько вводит в заблуждение. 32-разрядная оболочка PowerShell находится на C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe
, а 64-разрядная оболочка PowerShell - на C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
, любезно предоставленная в этой статье .