Во-первых, Set-ExecutionPolicy Unrestriced
для каждого пользователя и для каждого бита (32-разрядный отличается от 64-разрядного).
Во-вторых, вы можете переопределить политику выполнения из командной строки.
psxmlgen = subprocess.Popen([r'C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe',
'-ExecutionPolicy',
'Unrestricted',
'./buildxml.ps1',
arg1, arg2, arg3], cwd=os.getcwd())
result = psxmlgen.wait()
Видимо, вы можете получить доступ к 64-битной PowerShell из 32-битной PowerShell по этому пути (спасибо @eryksun в комментариях):
powershell64 = os.path.join(os.environ['SystemRoot'],
'SysNative' if platform.architecture()[0] == '32bit' else 'System32',
'WindowsPowerShell', 'v1.0', 'powershell.exe')