CLI에서 Windows Server 버전 32/64 비트 감지 Server를 실행하고

명령 줄에서 32 비트 또는 64 비트 버전의 Windows Server를 실행하고 있는지 감지하는 가장 빠르고 빠른 방법은 무엇입니까?

(Cygwin이 설치됨)



답변

약간 더 빠른 방법은 % ProgramFiles (x86) % 디렉토리가 있는지 확인하는 것입니다. 존재하는 경우 64 비트를 실행 중이고 존재하지 않으면 32 비트를 실행 중입니다.

빠른 원 라이너 :

if exist "%ProgramFiles(x86)%" echo 64-bit

64-bit디렉토리가 존재 하면 출력 됩니다. 그러나 변수로 존재하지 않았지만 디렉토리로 존재하면 (% ProgramFiles (x86) %) 실패합니다.

찾기 도구를 사용하여 비트를보다 정확하게 결정할 수 있습니다.

set | find "ProgramFiles(x86)"

또는 systeminfo이전 에 명령을 사용하여

systeminfo | find /I "System type"

( /IXP / 2003 / 2008 / etc에서 작동하도록 포함 )


답변

어때요 :

echo %PROCESSOR_ARCHITECTURE%

32 비트 시스템에서는 x86 을, 64 비트 시스템에서는 AMD64 (또는 IA64 )를 반환 합니다.


답변

systeminfo

약 10 개의 필드 아래에 시스템 유형이라는 필드가 있습니다. x86 또는 x64인지 알려줍니다.


답변

systeminfo | find /I "System type"

이것은 로케일에 따라 다르며 느립니다 .

echo %PROCESSOR_ARCHITECTURE%

공지 사항, 그것의 그 86 32 비트로 cmd.exe.

올바른 방법 :

set Arch=x64
if "%PROCESSOR_ARCHITECTURE%" == "x86" (
    if not defined PROCESSOR_ARCHITEW6432 set Arch=x86
)


답변

WMI 쿼리로 확인하는 다른 방법 :

PowerShell :

(gwmi win32_computersystem).SystemType

CMD :

wmic OS get OSArchitecture

여기에서 추출되었습니다 : http://www.sysadmit.com/2015/10/windows-como-saber-si-es-de-32-o-64-bits.html


답변

Windows에서 프로세서 아키텍처를 확인하는 방법은 여러 가지가 있습니다.

  • Windows 2000 이상 에서 프로세서 아키텍처를 확인하는 가장 빠르고, 쉽고, 가장 호환 가능한 방법 은 PROCESSOR_ARCHITECTURE 환경 변수 를 검사하는 것입니다 .

    echo %PROCESSOR_ARCHITECTURE%

  • 그러나 이는 명령 프롬프트가 열리는 방식에 따라 다른 결과를 제공 할 수 있습니다. WoW64로 인해 “예기치 않은 결과”가 발생하는 것을 방지하기 위해 레지스트리에서 직접 읽을 수 있습니다 (Microsoft는 키에 오타를 두 번 이상 입력 하지 않았습니다 ).

    reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v PROCESSOR_ARCHITECTURE

  • 또한 레지스트리에서 하드웨어 정보 저장소를 읽는 것이 좋습니다.

    reg query "HKLM\Hardware\Description\System\CentralProcessor\0" /v Identifier

  • 64 비트 시스템에만 존재하므로 x86 버전의 Program Files디렉토리 (또는 디렉토리 를 가리키는 환경 변수) 가 있는지 확인할 수도 있습니다. PROCESSOR_ARCHITECTURE변수 와 달리 이는 프롬프트가 열리는 방법에 관계없이 디렉토리가 존재하기 때문에 명령 프롬프트가 실행되는 방식에 의존하지 않습니다.

    • ::via env-var
      if not defined ProgramFiles(x86) echo 32-bit

    • ::via file-system
      if not exist "%systemdrive%\Program Files (x86)" echo 32-bit

이러한 방법은 단일 배치 파일 (예 :)로 결합 할 수 있으며 cpuinfo.bat다른 프로그램이나 프레임 워크를 실행하지 않고도 표준 Windows NT 명령 프롬프트에서 시스템을 검사 할 수있는 빠르고 간편한 방법을 제공합니다.

이것은 32 비트 및 Intel 64 비트 시스템에서 테스트되었으며 (AMD64에서 테스트하십시오) 1 초 내에 정확한 결과를 제공합니다.

@echo off

echo PROCESSOR_ARCHITECTURE var:
echo %PROCESSOR_ARCHITECTURE% | find /i "x86" > nul
if %errorlevel%==0 (
    echo   32-bit
) else (
    echo   64-bit
)
echo.

echo PROCESSOR_ARCHITECTURE reg:
reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v PROCESSOR_ARCHITECTURE | find /i "x86" > nul
if %errorlevel%==0 (
    echo   32-bit
) else (
    echo   64-bit
)
echo.

echo CentralProcessor reg:
reg query "HKLM\Hardware\Description\System\CentralProcessor\0" | find /i "x86" > nul
if %errorlevel%==0 (
    echo   32-bit
) else (
    echo   64-bit
)
echo.

echo ProgramFiles(x86) var:
if not defined ProgramFiles(x86) (
    echo   32-bit
) else (
    echo   64-bit
)
echo.

echo ProgramFiles(x86) dir:
if not exist "%systemdrive%\Program Files (x86)" (
    echo   32-bit
) else (
    echo   64-bit
)
echo.


답변

일반 솔루션

나는 이것을 정말로 파헤쳐 서 WMI에서 실제로 둘러보아야했습니다.

내 생각에 가장 좋은 옵션은 단순히이 PowerShell 문자열을 사용하는 것입니다

(Get-WmiObject win32_ComputerSystem -ComputerName $ComputerName).SystemType

이전 Windows 2003 및 XP에서도 작동합니다.

대답은

  • X86 기반 PC
  • x64 기반 PC

x64 기반 PC

또는 구식 cmd 도구로 되돌릴 경우

wmic computersystem get systemtype