感谢
BACON 提供的链接,指向一个与这个问题密切相关的问题,并附有
此答案。由此得到了以下简洁的解决方案,适用于
32位和64位 PowerShell 会话:
$pointerSizeInBytes = (4, 8)[[Environment]::Is64BitOperatingSystem]
[bool]
值被解释为数组索引([int]
),映射到0
($false
)或1
($true
),用于从数组4,8
中选择适当的值。
这是原始答案的形式,其中可能有一些相关信息:
一个简单的测试,假设您始终在32位PowerShell实例上运行:
$is64Bit = Test-Path C:\Windows\SysNative
64位系统上仅限32位进程将64位SYSTEM32目录视为 C:\Windows\SysNative
然而,以下内容适用于32位和64位会话:
$is64Bit = Test-Path 'Env:ProgramFiles(x86)'
只有在64位系统上,ProgramFiles(x86)
环境变量才会自动定义并与ProgramFiles
变量并存。
要获取操作系统本机指针大小(以字节为单位):
$pointerSizeInBytes = (4, 8)[[bool] ${env:ProgramFiles(x86)}]
${env:ProgramFiles(x86)}
使用命名空间变量符号直接返回环境变量ProgramFiles(x86)
的值;将字符串值转换为[bool]
仅对非空字符串返回$true
;将[bool]
解释为数组索引([int]
)映射到0
($false
)或1
($true
),这里用于从数组4,8
中选择适当的值。