Имя пользователя:
Пароль:
 

Показать сообщение отдельно

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


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

Профиль | Отправить 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