检查处理器体系结构并继续if语句

时间:2014-08-20 14:40:29

标签: powershell architecture processor

我知道这里有很多如何获得处理器架构的例子。

这应该在x64

上获得带有true或false检查的类型

我的问题是:如何将此输出转换为if语句?

示例:如果是64位处理器,则执行几个步骤,如果是32位,则执行其他步骤。我怎么能继续下去?

我尝试了几个版本的代码,但也得到了真或假的回复,但是如何继续下去呢?

你可以帮助我吗?

感谢

5 个答案:

答案 0 :(得分:2)

谢谢大家。

我使用以下方法解决了这个问题:

$os_type = (Get-WmiObject -Class Win32_ComputerSystem).SystemType -match ‘(x64)’

if ($os_type -eq "True") {
    Write-Host "i am an 64bit OS"
    write-host $os_type }
else {
    $os_type = (Get-WmiObject -Class Win32_ComputerSystem).SystemType -match ‘(x86)’

    if ($os_type -eq "True") {
        Write-Host "i am a 32 Bit OS" }

答案 1 :(得分:1)

[System.Environment]::Is64BitProcess返回true或false,因此它是一个非常简单的if语句。

if ([System.Environment]::Is64BitProcess) {
# Do 64-bit stuff
} else {
#Do 32-bit stuff
}

你没有具体说明"很多例子中的哪一个"你正在使用,所以我展示了我使用的方法。

答案 2 :(得分:0)

Alroc的回答适用于PowerShell 3.0或更高版本我相信。如果出现问题,另一种方法是:

$architecture = (Get-WmiObject win32_processor | Where-Object{$_.deviceID -eq "CPU0"}).AddressWidth
If ($architecture -eq 64) {
    # Do 64-bit stuff
} else {
    #Do 32-bit stuff
}

答案 3 :(得分:0)

感谢您的投入!

我试过这个例子:

感谢您的回答!我尝试了以下例子:

    echo "check if 32 or 64bit OS"
    $var = (Get-WmiObject -Class Win32_ComputerSystem).SystemType -match ‘(x64)’
    if ($var = "True") {echo "i am an 64bit OS"

    #setting the current directory as the directory the script is in
    $sourcenssm= Split-Path -Parent $MyInvocation.MyCommand.Definition

    #setting the targetdirectory for nssm
    $targetnssm="C:\Users\cp\Desktop\nssm.exe"

    #setting the current directory as the directory the script is in
    $sourcewts= Split-Path -Parent $MyInvocation.MyCommand.Definition

    #setting the targetdirectory for wtswatchdog
    $targetwts="C:\Windows\wtswatchdog.exe"

    #copying nssm to target - WORKING
    if (-not(Test-path $targetnssm)) {Copy-item -Path $sourcenssm\nssm.exe -Destination $targetnssm}

    #copying wtswatchdog to target - CHECK!
    if (-not(Test-path $targetwts)) {Copy-item -Path $sourcewts\wtswatchdog.exe -Destination $targetwts}
}

但如果我正在检查

,它每次都会给我64位作为输出
 echo "check if 32 or 64bit OS"
            $var = (Get-WmiObject -Class Win32_ComputerSystem).SystemType -match ‘(x86)’
            if ($var = "True") {echo "i am an 64bit OS"}

然后它也会进入echo-part。

答案 4 :(得分:0)

也可以使用环境变量。

let sessionConfiguration = TVSessionConfiguration(block: { builder in
    builder?.sessionCode = "SESSION_CODE"            
})