Aqui está uma função Archetype aninhada para determinar a bitrness do SO + bitness do Powershell. Adicionado sysnative
caminho em uma variável para reg.exe para que você possa editar as chaves x64 a partir de um processo de 32 bits. Se você não preferir reg.exe, tenho certeza de que existem outras maneiras de fazer o mesmo truque.
Function ARCHETYPE (){
$ARCH = (Get-WmiObject -class Win32_OperatingSystem | Select-Object OSArchitecture).OSArchitecture
If ($ARCH -eq '64-bit') {
$DOUBLEARCHES = (Get-Process -Id $PID).StartInfo.EnvironmentVariables["PROCESSOR_ARCHITECTURE"]
If ($DOUBLEARCHES -eq 'x86') {
Write-Host 'Running 32-bit PowerShell on 64-bit Windows'
$REG = "%WINDIR%\sysnative\reg.exe"
}
ElseIf ($DOUBLEARCHES -eq 'amd64') {
Write-Host 'Running 64-bit PowerShell on 64-bit Windows'
$REG = "%WINDIR%\system32\reg.exe"
}
}Else{
Write-Host 'Running 32-bit PowerShell on 32-bit Windows'
$REG = "%WINDIR%\system32\reg.exe"
}
Write-Host "$REG"
}
ARCHETYPE
Resultado
Running 64-bit PowerShell on 64-bit Windows
%WINDIR%\system32\reg.exe
ou
Running 32-bit PowerShell on 64-bit Windows
%WINDIR%\sysnative\reg.exe