PowerShell: Определение разрядности ОС Windows

PowerShell: Определение разрядности ОС Windows

Нашёл на Stack Overflow хорошую функцию по определению разрядности ОС и процесса #PowerShell. Запишу, обязательно пригодится.

Разрядность ОС

Разрядность ОС можно определить следующей функцией:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
function Get-Architecture {
  # What bitness does Windows use.
  switch ([Environment]::Is64BitOperatingSystem) { # Needs '.NET 4'.
    $true   { 64; break }
    $false  { 32; break }
    default {
      (Get-WmiObject -Class Win32_OperatingSystem).OSArchitecture -replace '\D'
      # Or do any of these:
      # (Get-WmiObject -Class Win32_ComputerSystem).SystemType -replace '\D' -replace '86', '32'
      # (Get-WmiObject -Class Win32_Processor).AddressWidth # This is slow...
    }
  }
}

Можно записать эту функцию в файл и запустить файл в терминале, или же внедрить в крупный проект и вызывать по имени Get-Architecture.

Результат

Терминал
1
2
.\arch.ps1
64

Разрядность ОС и PowerShell

Расширенная версия, которая позволяет определить разрядность ОС и процесса PowerShell, под которым выполняется функция.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
function Get-Architecture {
  # What bitness does Windows use.
  $windowsBitness = switch ([Environment]::Is64BitOperatingSystem) { # Needs '.NET 4'.
    $true   { 64; break }
    $false  { 32; break }
    default {
      (Get-WmiObject -Class Win32_OperatingSystem).OSArchitecture -replace '\D'
      # Or do any of these:
      # (Get-WmiObject -Class Win32_ComputerSystem).SystemType -replace '\D' -replace '86', '32'
      # (Get-WmiObject -Class Win32_Processor).AddressWidth # Slow...
    }
  }

  # What bitness does this PowerShell process use.
  $processBitness = [IntPtr]::Size * 8
  # Or do any of these:
  # $processBitness = $env:PROCESSOR_ARCHITECTURE -replace '\D' -replace '86|ARM', '32'
  # $processBitness = if ([Environment]::Is64BitProcess) { 64 } else { 32 }

  # Return the info as object.
  New-Object -TypeName PSObject -Property @{
    'ProcessArchitecture' = "{0} bit" -f $processBitness
    'WindowsArchitecture' = "{0} bit" -f $windowsBitness
  }
}

Можно записать эту функцию в файл и запустить файл в терминале, или же внедрить в крупный проект и вызывать по имени Get-Architecture.

Результат

Терминал
1
2
3
4
5
.\arch.ps1

ProcessArchitecture WindowsArchitecture
------------------- -------------------
64 bit              64 bit
Категории
Теги
Авторы
Мета
Лицензия
ID файла
UUID
Системный путь
Тип
Статистика
Количество слов
Время чтения
мин.