在Powershell中确定32/64位

时间:2015-08-13 00:33:59

标签: powershell

我正在尝试创建几行代码,如果一台机器是32/64位,那么它将从WMI中提取,然后如果它是64这样做....如果它是32位,请执行此操作...

有人可以帮忙吗?

7 个答案:

答案 0 :(得分:5)

Random discussion about it

在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.