Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Инвентаризация (http://forum.oszone.net/showthread.php?t=320345)

mcintosh55 01-11-2016 12:40 2683692

Инвентаризация
 
Привет всем!!!!
Код:

(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)]}}


Kazun 01-11-2016 12:56 2683698

Использовать последние версии ОС(W10,W16), там обновлен этот параметр:

PS > (Get-WmiObject -Class Win32_PhysicalMemory).Memorytype
24

24 - DDR3—May not be available; see note above.

Так что отталкиваться от свойства - Speed.

Iska 01-11-2016 14:35 2683727

Цитата:

Цитата Kazun
Использовать последние версии ОС(W10,W16), там обновлен этот параметр: »

А чем это поможет? Опрашиваться-то будет другая ОС.

mcintosh55 01-11-2016 15:25 2683740

Цитата:

Цитата Kazun
Использовать последние версии ОС(W10,W16), там обновлен этот параметр: »

печально у меня W8.1 и w7

mcintosh55 01-11-2016 18:37 2683777

а как тогда определяет aida и другие ей подобные

Iska 01-11-2016 19:15 2683788

Цитата:

Цитата mcintosh55
а как тогда определяет aida и другие ей подобные »

Как правило, они пользуют напрямую WinAPI и свои собственные регулярно обновляемые базы.

Вы можете попробовать использовать вызов, например, CPU-Z (в отличии от AIDA64 — не требующего оплаты) с параметром -txt=ФайлОтчёта, каковой разбирать впоследствии.

mcintosh55 01-11-2016 19:47 2683797

Цитата:

Цитата Iska
Вы можете попробовать использовать вызов, например, CPU-Z »

в принципе как вариант, а потом PoSH обработать этот файл.

Нашел статью как вытаскивали данные из ПК по средствам winapi но как они определяли тип памяти не сказано

Iska 01-11-2016 20:18 2683802

Цитата:

Цитата mcintosh55
в принципе как вариант, а потом PoSH обработать этот файл »

Угу. Есть ещё параметр -console, т.е., в принципе, можно попробовать обойтись вовсе без промежуточного файла, но надо смотреть, как именно приложение это делает. У меня сложилось первое впечатление, что оно при этом не в поток пишет, а как бы не напрямую WriteСonsole пользует :).

mcintosh55 01-11-2016 20:26 2683803

Ну раз городить велосипед то решено завтра все переезжают на windows 10, а то сторонии утилиты - это зло, малоли что туда программисты на программировали :-D

:) :)

mcintosh55 02-11-2016 05:32 2683886

Нашел решение в массиве сделал вот так
Код:

$Type = "Unknown\ddr3*", "Other", "DRAM"
а внизу отчета *см. материнскую плату (благо она определятся нормально)

Iska 02-11-2016 07:57 2683903

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

MKN 29-11-2016 18:14 2691522

Цитата:

Цитата mcintosh55
а как тогда определяет aida и другие ей подобные »

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

vjungle 23-12-2016 17:23 2697936

Цитата:

Цитата mcintosh55
а как тогда определяет aida и другие ей подобные »

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

vjungle 23-12-2016 17:38 2697938

Есть ещё предложение капать в сторону 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

Iska 23-12-2016 19:10 2697951

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


Время: 08:27.

Время: 08:27.
© OSzone.net 2001-