Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Инвентаризация

Ответить
Настройки темы
PowerShell - [решено] Инвентаризация

Старожил


Сообщения: 300
Благодарности: 8

Профиль | Отправить PM | Цитировать


Привет всем!!!!
Код: Выделить весь код
(Get-WmiObject -Class Win32_PhysicalMemory).Memorytype
Должен выводить цифры, далее цифры приобразовываем в тип памяти согласно сайту ms, но там ни чего не написано про ddr3 или ddr4 память.

Что у меня выдает на память ddr3 - 0, по таблички MS - это "Unknown"

Есть у кого какие мысли

Фрагмент кода
Код: Выделить весь код
$Type = "Unknown", "Other", "DRAM", "Synchronous DRAM", "Cache DRAM", "EDO", "EDRAM",
        "VRAM", "SRAM", "RAM", "ROM", "Flash", "EEPROM", "FEPROM", "EPROM", "CDRAM",
        "3DRAM", "SDRAM", "SGRAM", "RDRAM", "DDR-1", "DDR-2",

# ОЗУ
$b = Get-WmiObject -Class Win32_PhysicalMemory -ComputerName $computername | 
    Select-Object -Property @{"Name"="Комплектующие"; "expression"={"Оперативная память"}}, 
    @{"Name"="Тип памяти"; e={$_.DeviceLocator}},  
    @{"Name"="Разъём"; e={$_.BankLabel}}, 
    @{"Name"='Объем память(MB)';e={$_.Capacity / 1MB -as [int]}},
    @{"Name"='Сокет'; e={$Type[($_.Memorytype)]}}

Отправлено: 12:40, 01-11-2016

 

Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


mcintosh55, там могут быть не только DDR3, а в принципе — любое, в том числе и просто не реализованное.

Отправлено: 07:57, 02-11-2016 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.

MKN MKN вне форума

Ветеран


Сообщения: 2355
Благодарности: 557

Профиль | Отправить PM | Цитировать


Цитата mcintosh55:
а как тогда определяет aida и другие ей подобные »
Вероятно из таблиц SPD ППЗУ модулей памяти. Средства WMI и тем более API, совершенно не пригодны для корректной полной информации о памяти..
Немного инфы здесь : http://www.ixbt.com/mainboard/spd.shtml
http://softnology.biz/tips_cpuz_bullshit2.html

Последний раз редактировалось MKN, 29-11-2016 в 18:33.

Это сообщение посчитали полезным следующие участники:

Отправлено: 18:14, 29-11-2016 | #12


Новый участник


Сообщения: 13
Благодарности: 2

Профиль | Сайт | Отправить PM | Цитировать


Цитата mcintosh55:
а как тогда определяет aida и другие ей подобные »
Вся инфа вытягивается из крохотной микросхемы SPD EEPROM, что напаивается на печатную плату модуля памяти. Доступ к этой микросхеме для неопытного пользователя будет сложным, т.к. он осуществляется через контроллер SMBus (в процессоре либо южном мосте). Обращение к контроллеру реализуется через чтение/запись портов в/в либо через маппинг памяти. Для обоих случаев необходим драйвер. По сути нужно уметь запрограммировать контроллер согласно его документации, чтобы он сам обратился к ячейкам SPD EEPROM и считал их содержимое. На модулях DDR3 SDRAM ёмкость микросхемы составляет 256 байтов. Первая половина содержит всю важную инфу, вторая половина - профили XMP 1.x либо не содержит ничего. Дешифрация значений байтов SPD осуществляется согласно приложениям "JEDEC Annex SPD". На сайте http://softnology.biz в разделе Download они лежат в свободном доступе.

Отправлено: 17:23, 23-12-2016 | #13


Новый участник


Сообщения: 13
Благодарности: 2

Профиль | Сайт | Отправить PM | Цитировать


Есть ещё предложение капать в сторону DMI/SMBIOS. Это таблицы разных типов (для процессора, модулей памяти, материнской платы и т.д.), которые содержат инфу об аппартных компонентах ПК. Для работы с DMI/SMBIOS есть WinAPI-функции, вроде GetSystemFirmwareTable, однако самый простой способ получить содержимое DMI - считать ветку из реестра, которая обновляется при каждом запуске Windows:

Код: Выделить весь код
type
  TRawSMBIOSData = packed record
    Used20CallingMode : Byte;
    SMBIOSMajorVersion : Byte;
    SMBIOSMinorVersion : Byte;
    DMIRevision : Byte;
    DataLength : DWORD;
    SMBIOS : array [0..5120] of Byte;
  end;
  
function ReadSMBIOSFromRegistry(var Buffer: TRawSMBIOSData): Boolean;
var
  Reg : TRegistry;
  dwResult : Dword;
begin
  Result:=False;
  Reg:=TRegistry.Create;
  Reg.RootKey:=HKEY_LOCAL_MACHINE;
  if Reg.OpenKey('\SYSTEM\CurrentControlSet\Services\mssmbios\Data', False) then
    if Reg.ValueExists('SMBiosData') then
    try
      dwResult:=Reg.ReadBinaryData('SMBiosData',Buffer,SizeOf(Buffer));
      if dwResult <= SizeOf(Buffer) then Result:=True;
      finally
        Reg.Free;
    end;
end;
После чего потребуется разбор и анализ данных DMI согласно документации https://www.dmtf.org/standards/smbios

Отправлено: 17:38, 23-12-2016 | #14


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


vjungle, навряд ли кто-то будет копать до таких глубин.

Отправлено: 19:10, 23-12-2016 | #15



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Инвентаризация

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Инвентаризация КИПиА 2.1 OSZone Software Новости программного обеспечения 0 19-10-2016 21:30
Вопрос - Инвентаризация лицензионных ключей kolonhoe Защита компьютерных систем 6 02-07-2015 11:29
Инвентаризация 2.0 OSZone Software Новости программного обеспечения 0 20-12-2012 13:30
Инвентаризация оборудования Ultrix Хочу все знать 4 26-02-2009 11:43
Log/Monitoring - Инвентаризация сети sword_495 Сетевые технологии 2 13-05-2008 12:07




 
Переход