支持WIN7+或2008R2+。
检测脚本是64位还是32位是一件非常简单的事情,测试指针大小,看它是的大小是4位还是8位。
if ([IntPtr]::Size -eq 8)
{
    '64-bit'
}
else
{
    '32-bit'
} 
这无法获取操作系统的位数,因为32位的脚本也可以运行在64位的系统上。
如果需要获取系统版本,请尝试:
if ([Environment]::Is64BitOperatingSystem)
{
    '64-bit'
}
else
{
    '32-bit'
} 
同时,也这个类也可以查看程序位数。
if ([Environment]::Is64BitProcess)
{
    '64-bit'
}
else
{
    '32-bit'
} 
2016-10-29日更新:
还有@C推荐的:
(Get-WmiObject Win32_OperatingSystem).osarchitecture
原文地址:Detecting 64-bit Operating System
本文链接: https://www.pstips.net/detecting-64-bit-operating-system.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
                                      请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!

请问下 兄台 [IntPtr] 是什么意思?添加的类型吗? 是不是插入流? 还是什么其他?
这是在.Net中调用Windows API时,用到的一个句柄指针类型。IntPtr是一个整形,具体的大小和系统的位数有关。
经典的案例就是在C# 中调用Windows 的API,里面就会遇到:
[DllImport("winmm.dll")] private static extern long mciSendString(string a,string b,uint c,IntPtr d);(Get-WmiObject Win32_OperatingSystem).osarchitecture
漂亮,已在原文上更新了。
(Get-WmiObject -Class Win32_Processor).addresswidth返回TypeName:System.UInt16更好用
$ENV:PROCESSOR_ARCHITECTURE
漂亮
你好,请教下怎么把“(Get-WmiObject Win32_OperatingSystem).osarchitecture”的结果赋值给一个变量呢?