|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - мониторы, нет серийника, найти другое уникальное значение. |
|
|
PowerShell - мониторы, нет серийника, найти другое уникальное значение.
|
Старожил Сообщения: 211 |
Профиль | Отправить PM | Цитировать Доброго всем времени суток! При обращении к:
большинство мониторов имеет: производителя, модель, серийник, но есть процент мониторов, у которых пустые значения: ManufacturerName, UserFriendlyName, SerialNumberID, или они имеют не уникальные значения. Вопрос, возможно ли как-то запросить у монитора все имеющиеся у него значения, чтобы найти мб гуид какой-либо, в общем уникальное значение, по которому можно будет идентифицировать монитор? Видел можно выдернуть из SCOM модуль для powershell и возможно там, что-то найти про монитор, но пока не совсем понял про то ли там речь. Возможно кто-то уже сталкивался с задачей поиска любого идентификатора оборудования, не важно серийний он или нет.
|
|
Отправлено: 09:58, 12-02-2021 |
Забанен Сообщения: 793
|
Вам лучше "спуститься" на уровень объектов Windows, конкретнее - \Device. Собственно, туда монтируются видеоустройства: \Device\Video0, \Device\Video1 ... \Device\VideoX. Сведения о точках монтирования помещаются в реестр по пути HKLM\HARDWARE\DEVICEMAP\VIDEO, оттуда и забирайте информацию.
|
Отправлено: 19:06, 15-02-2021 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
(*.*) Сообщения: 36512
|
Профиль | Сайт | Отправить PM | Цитировать Griboed0ff, я бы попробовал взять InstanceID из диспетчера устройств.
В Windows 10 20H1+ - pnputil /enum-devices. В более ранних версиях Windows - devcon https://t.me/sterkin_ru/658 | https://vk.com/@sterkin_ru-devcon pnputil /enum-devices /connected /class monitor Microsoft PnP Utility Instance ID: DISPLAY\DELA07B\5&134b4fb&2&UID4356 Device Description: Dell U2412M(DisplayPort) Class Name: Monitor Class GUID: {4d36e96e-e325-11ce-bfc1-08002be10318} Manufacturer Name: Dell Inc. Status: Started Driver Name: oem38.inf Instance ID: DISPLAY\PHL08EB\5&134b4fb&2&UID4864 Device Description: Generic PnP Monitor Class Name: Monitor Class GUID: {4d36e96e-e325-11ce-bfc1-08002be10318} Manufacturer Name: (Standard monitor types) Status: Started Driver Name: monitor.inf Цитата greg zakharov:
|
|
------- Отправлено: 11:24, 17-02-2021 | #3 |
Забанен Сообщения: 793
|
Vadikan, объясняю популярно, раз такой густой туман. Колонка слева - точки монтирования, справа - значения в реестре, куда нужно прогуляться далее по реестру. Например, устройство \Device\VideoX указывает на \Registry\Machine\System\CurrentControlSet\Control\Video\{GUID}\XXXX, значит нужно прогуляться в HKLM\SYSTEM\CurrentControlSet\Control\Video\{GUID}\XXXX. Всё это "безобразие" формируется системой при каждом старте (не путать со входом пользователя). К слову, pnputil по указанным разделам реестра и берет значения.
|
Отправлено: 12:52, 17-02-2021 | #4 |
Старожил Сообщения: 211
|
Профиль | Отправить PM | Цитировать Цитата greg zakharov:
Скрытый текст
[HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\VIDEO] "\\Device\\Video0"="\\Registry\\Machine\\System\\CurrentControlSet\\Control\\Video\\{10C3C197-EA6D-11E5-9BE5-A0D3C14612A1}\\0000" "MaxObjectNumber"=dword:00000003 "ObjectNumberList"=hex:00,00,00,00,01,00,00,00,02,00,00,00,03,00,00,00 "\\Device\\Video1"="\\Registry\\Machine\\System\\CurrentControlSet\\Control\\Video\\{3BD9A71D-24D9-47AB-9BF9-CF71FC7B3328}\\0000" "\\Device\\Video2"="\\Registry\\Machine\\System\\CurrentControlSet\\Control\\Video\\{3BD9A71D-24D9-47AB-9BF9-CF71FC7B3328}\\0001" "\\Device\\Video3"="\\REGISTRY\\MACHINE\\SYSTEM\\ControlSet001\\Services\\BasicDisplay" "\\Device\\Disc"="\\REGISTRY\\Machine\\System\\CurrentControlSet\\Services\\TSDDD\\Device0" Цитата Vadikan:
Вот, что есть про мой монитор: Скрытый текст
PS C:\WINDOWS\system32> Get-PnpDeviceProperty -InstanceId 'DISPLAY\ACRAD14\4&1CC31B9&0&UID65793' InstanceId KeyName Type Data ---------- ------- ---- ---- DISPLAY... DEVPKEY_Device_DeviceDesc String Универсальный монитор PnP DISPLAY... DEVPKEY_Device_HardwareIds StringList {MONITOR\ACRAD14} DISPLAY... DEVPKEY_Device_CompatibleIds StringList {*PNP09FF} DISPLAY... DEVPKEY_Device_Service String monitor DISPLAY... DEVPKEY_Device_Class String Monitor DISPLAY... DEVPKEY_Device_ClassGuid Guid {4D36E96E-E325-11CE-BFC1-08002BE10318} DISPLAY... DEVPKEY_Device_Driver String {4d36e96e-e325-11ce-bfc1-08002be10318}\0062 DISPLAY... DEVPKEY_Device_ConfigFlags UInt32 0 DISPLAY... DEVPKEY_Device_Manufacturer String (Стандартные мониторы) DISPLAY... DEVPKEY_Device_PDOName String \Device\00000093 DISPLAY... DEVPKEY_Device_Capabilities UInt32 228 DISPLAY... DEVPKEY_Device_BusTypeGuid Guid {C6CA0D74-E43B-4ABD-A63A-4BD2AD319D60} DISPLAY... DEVPKEY_Device_LegacyBusType UInt32 15 DISPLAY... DEVPKEY_Device_BusNumber UInt32 0 DISPLAY... DEVPKEY_Device_EnumeratorName String DISPLAY DISPLAY... DEVPKEY_Device_Address UInt32 65793 DISPLAY... DEVPKEY_Device_PowerData Binary {56, 0, 0, 0...} DISPLAY... DEVPKEY_Device_RemovalPolicy UInt32 2 DISPLAY... DEVPKEY_Device_RemovalPolicyDefault UInt32 2 DISPLAY... DEVPKEY_Device_InstallState UInt32 0 DISPLAY... DEVPKEY_Device_BaseContainerId Guid {2619191B-7090-11EB-9C81-A0D3C14D512D} DISPLAY... DEVPKEY_NAME String Универсальный монитор PnP DISPLAY... DEVPKEY_Device_InstanceId String DISPLAY\ACRAD14\4&1CC31B9&0&UID65793 DISPLAY... DEVPKEY_Device_DevNodeStatus UInt32 25190410 DISPLAY... DEVPKEY_Device_ProblemCode UInt32 0 DISPLAY... DEVPKEY_Device_Parent String PCI\VEN_8086&DEV_0412&SUBSYS_198E103C&REV_06\3&11583659&... DISPLAY... DEVPKEY_Device_SafeRemovalRequired Boolean False DISPLAY... DEVPKEY_Device_ContainerId Guid {2619191B-7090-11EB-9C81-A0D3C14D512D} DISPLAY... DEVPKEY_Device_IsPresent Boolean True DISPLAY... DEVPKEY_Device_HasProblem Boolean False DISPLAY... {83DA6326-97A6-4088-9453-A1923F573B29} 15 Boolean True DISPLAY... DEVPKEY_Device_IsRebootRequired Boolean False DISPLAY... DEVPKEY_Device_ReportedDeviceIdsHash UInt32 2917783173 DISPLAY... DEVPKEY_Device_InLocalMachineContainer Boolean False DISPLAY... DEVPKEY_Device_Stack StringList {\Driver\monitor, \Driver\igfx} DISPLAY... {3464F7A4-2444-40B1-980A-E0903CB6D912} 10 UInt32 2 DISPLAY... {3464F7A4-2444-40B1-980A-E0903CB6D912} 14 UInt32 2 DISPLAY... DEVPKEY_Device_BusReportedDeviceDesc String Generic Monitor DISPLAY... DEVPKEY_Device_ConfigurationId String monitor.inf:*PNP09FF,PnPMonitor.Install DISPLAY... {80497100-8C73-48B9-AAD9-CE387E19C56E} 6 UInt32 1 DISPLAY... {83DA6326-97A6-4088-9453-A1923F573B29} 3 String monitor.inf:91d2a0f3f5cc9ebd:PnPMonitor.Install:10.0.105... DISPLAY... {83DA6326-97A6-4088-9453-A1923F573B29} 10 String PCI\VEN_8086&DEV_0412&SUBSYS_198E103C&REV_06\3&11583659&... DISPLAY... DEVPKEY_Device_InstallDate FileTime 17.02.2021 10:33:27 DISPLAY... DEVPKEY_Device_FirstInstallDate FileTime 17.02.2021 10:33:27 DISPLAY... DEVPKEY_Device_LastArrivalDate FileTime 17.02.2021 10:33:27 DISPLAY... DEVPKEY_Device_DriverDate FileTime 21.06.2006 6:00:00 DISPLAY... DEVPKEY_Device_DriverVersion String 10.0.10586.0 DISPLAY... DEVPKEY_Device_DriverDesc String Generic PnP Monitor DISPLAY... DEVPKEY_Device_DriverInfPath String monitor.inf DISPLAY... DEVPKEY_Device_DriverInfSection String PnPMonitor.Install DISPLAY... DEVPKEY_Device_MatchingDeviceId String *PNP09FF DISPLAY... DEVPKEY_Device_DriverProvider String Microsoft DISPLAY... DEVPKEY_Device_DriverRank UInt32 16719872 так же в реестре найдены такие значения в названиях, непонятно пока уникальны ли они или такие же назначаемые виндой |
|||
Последний раз редактировалось Griboed0ff, 17-02-2021 в 13:43. Отправлено: 13:35, 17-02-2021 | #5 |
(*.*) Сообщения: 36512
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Griboed0ff:
Цитата greg zakharov:
|
||
------- Отправлено: 13:57, 17-02-2021 | #6 |
Старожил Сообщения: 211
|
Профиль | Отправить PM | Цитировать Цитата greg zakharov:
|
|
Последний раз редактировалось Griboed0ff, 17-09-2021 в 15:33. Отправлено: 14:04, 17-02-2021 | #7 |
Старожил Сообщения: 211
|
Профиль | Отправить PM | Цитировать Цитата Vadikan:
|
|
Отправлено: 14:10, 17-02-2021 | #8 |
Забанен Сообщения: 793
|
Цитата Vadikan:
Цитата Griboed0ff:
|
||
Отправлено: 14:30, 17-02-2021 | #9 |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать Всем привет!
Тоже есть такая задача - инвентаризация мониторов в организации... мигрируют они каким-то странным образом с места на место ))) Ну и начал искать в сети, где-то наткнулся на дотошного автора данного скрипта. У меня на 2000+ мест отрабатывает полностью (кроме, дисплейных панелей - но и там серийник выводит, остальное ерунда какая-то) По двум мониторам тоже показывает. Удачи! function Get-LittleEndianInt($array, $index) { $temp = @(0) * 4 [Array]::Copy($array, $index, $temp, 0, 4) [Array]::Reverse($temp) [System.BitConverter]::ToInt32($temp, 0) } # -------------- try get monitor info --------------------------------------------------------------------------------------------------------------------------- $monitorInfo = @() gwmi Win32_PnPEntity -Filter "Service='monitor'" | % { $mi = @{} $mi.Caption = $_.Caption $mi.DeviceID = $_.DeviceID $Reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', '') $RegKey = $Reg.OpenSubKey("SYSTEM\CurrentControlSet\Enum\"+$_.DeviceID + "\Device Parameters") $edid = $RegKey.GetValue("EDID") if($edid -ne $null) { $mi.Manufacturer += [char](64 + [Int32]($edid[8] / 4)) $mi.Manufacturer += [char](64 + [Int32]($edid[8] % 4) * 8 + [Int32]($edid[9] / 32)) $mi.Manufacturer += [char](64 + [Int32]($edid[9] % 32)) $mi.ManufacturingWeek = $edid[16] $mi.ManufacturingYear = $edid[17] + 1990 $mi.HorizontalSize = $edid[21] $mi.VerticalSize = $edid[22] $mi.DiagonalSize = [Math]::Round([Math]::Sqrt($mi.HorizontalSize*$mi.HorizontalSize + $mi.VerticalSize*$mi.VerticalSize) / 2.54) for($i=54;$i-lt109;$i+=18) { if((Get-LittleEndianInt $edid $i) -eq 0xff) { for($j = $i+5; $edid[$j] -ne 10 -and $j -lt $i+18; $j++) { $mi.SerialNumber += [char]$edid[$j] } } if((Get-LittleEndianInt $edid $i) -eq 0xfc) { for($j = $i+5; $edid[$j] -ne 10 -and $j -lt $i+18; $j++) { $mi.Name += [char]$edid[$j] } } } $monitorInfo = $mi } } # ----------------------------------------------------------------------------------------------------------------------------------------------------------- $monitorInfo |
Последний раз редактировалось AAT666, 01-03-2021 в 10:34. Отправлено: 10:26, 01-03-2021 | #10 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
PowerShell - [решено] Мониторы, выбрать нужное значение. | Griboed0ff | Скриптовые языки администрирования Windows | 10 | 10-02-2021 12:34 | |
CMD/BAT - [решено] Найти наибольшее значение файла | crazydog | Скриптовые языки администрирования Windows | 3 | 26-09-2019 09:47 | |
Нет сигнала с видеокарт на мониторы | taraleks | Видеокарты | 3 | 10-05-2018 23:27 | |
MySQL - Найти ближайшее значение | stihmih | Программирование и базы данных | 2 | 26-08-2012 17:51 | |
2010 - [решено] Найти сопадающие значение в таблицах excel | YulZo | Microsoft Office (Word, Excel, Outlook и т.д.) | 3 | 28-05-2012 09:30 |
|