我正在尝试创建几行代码,如果一台机器是32/64位,那么它将从WMI中提取,然后如果它是64这样做....如果它是32位,请执行此操作...
有人可以帮忙吗?
答案 0 :(得分:5)
在64位计算机上运行的32位版本的PowerShell中包含一个适合我的示例:
gwmi win32_operatingsystem | select osarchitecture
返回" 64位"对于64位。
if ((gwmi win32_operatingsystem | select osarchitecture).osarchitecture -eq "64-bit")
{
#64 bit logic here
Write "64-bit OS"
}
else
{
#32 bit logic here
Write "32-bit OS"
}
答案 1 :(得分:5)
您可以检查和比较环境中的两个布尔静态方法,一个查看PowerShell流程,一个查看底层操作系统。
if ([Environment]::Is64BitProcess -ne [Environment]::Is64BitOperatingSystem)
{
"PowerShell process does not match the OS"
}
答案 2 :(得分:1)
[IntPtr]::Size -eq 4 # 32 bit
IntPtr的大小在32位机器上是4个字节,在64位机器上是8个字节(https://msdn.microsoft.com/en-us/library/system.intptr.size.aspx)。
答案 3 :(得分:1)
这与先前的答案类似,但是无论采用64位/ 64位/ 64位/ 64位格式,都将获得正确的结果。
if ((Get-WmiObject win32_operatingsystem | select osarchitecture).osarchitecture -like "64*")
{
#64bit code here
Write "64-bit OS"
}
else
{
#32bit code here
Write "32-bit OS"
}
答案 4 :(得分:1)
两行粉碎在一起形成一个不错的单线:
Write-Host "64bit process?:"$([Environment]::Is64BitProcess) ;Write-Host "64bit OS?:"$([Environment]::Is64BitOperatingSystem);
答案 5 :(得分:0)
重用 Guvante 的答案来创建一个全局布尔值
$global:Is64Bits=if((gwmi win32_operatingsystem | select osarchitecture).osarchitecture -eq "64-bit"){$true}else{$false}
答案 6 :(得分:-1)
if($env:PROCESSOR_ARCHITECTURE -eq "x86"){"32-Bit CPU"}Else{"64-Bit CPU"}
-edit,抱歉忘了包含更多代码来解释用法。
if($env:PROCESSOR_ARCHITECTURE -eq "x86")
{
#If the powershell console is x86, create alias to run x64 powershell console.
set-alias ps64 "$env:windir\sysnative\WindowsPowerShell\v1.0\powershell.exe"
$script2=[ScriptBlock]::Create("#your commands here, bonus is the script block expands variables defined above")
ps64 -command $script2
}
Else{
#Otherwise, run the x64 commands.