|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] извлечь данные о мониторах из реестра |
|
|
PowerShell - [решено] извлечь данные о мониторах из реестра
|
Старожил Сообщения: 211 |
Доброго всем времени суток! Есть задача получить данные о мониторах в винде, а именно модель и серийный номер. Данные хранятся в реестре ("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\DISPLAY") в бинарном виде. Есть батник DispEDID, который умеет считывать и переводить в читабельный вид модель и серийник. Проблема в том, что данный батник выдает данные только 1 монитора, а если их 2 или 3 то, покажет данные последнего. Мозгов переписать такой сложный батник не хватает. Подумал может эту задачу проще решить через ps, по идее надо просто снять данные, конвертировать на человеческий, отправить в .cvs
|
|
Отправлено: 12:07, 17-04-2020 |
Ветеран Сообщения: 3806
|
Профиль | Отправить PM | Цитировать Цитата Griboed0ff:
никак иначе инвентаризация не проводится всевозможная автоматизация - это помощь по отслеживанию изменений, а не первоисточник |
|
Отправлено: 11:49, 19-04-2020 | #21 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 211
|
Профиль | Отправить PM | Цитировать тут больше для отслеживания изменений, даже больше для истории. а то всплывают мониторы где то на складе и никто не знает откуда они взялись, а так хотя бы примерно знать где этот моник был. Если эти данные будут на 80%-90% правдивы уже хорошо. Но сразу же встретил проблему, одна модель мониторов имеет одинаковый серийник.
|
Отправлено: 11:55, 19-04-2020 | #22 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Griboed0ff, наклеечки, наклеечки наше всё. Ну, или — выжигатель для особо тяжёлых случаев.
|
Отправлено: 14:54, 19-04-2020 | #23 |
Старожил Сообщения: 211
|
Профиль | Отправить PM | Цитировать Цитата Busla:
Param( #powershell [string]$Region ) $myscripname=$myInvocation.ScriptName if ($Region -eq "MSK_TT") { $OU = "OU=Workstations,OU=TT,OU=Computers,OU=MSK,DC=tsretail,DC=ru" } elseif ($Region -eq "MSK_S") { $OU = "OU=Servers,OU=TT,OU=Computers,OU=MSK,DC=tsretail,DC=ru" } elseif ($Region -eq "VLK_TT") { $OU = "OU=Workstations,OU=TT,OU=Computers,OU=VLK,OU=Regions,DC=tsretail,DC=ru" } elseif ($Region -eq "VLK_S") { $OU = "OU=Servers,OU=TT,OU=Computers,OU=VLK,OU=Regions,DC=tsretail,DC=ru" } elseif ($Region -eq "SMR_TT") { $OU = "OU=Workstations,OU=TT,OU=Computers,OU=SMR,OU=Regions,DC=tsretail,DC=ru" } elseif ($Region -eq "SMR_S") { $OU = "OU=Servers,OU=TT,OU=Computers,OU=SMR,OU=Regions,DC=tsretail,DC=ru" } elseif ($Region -eq "UFA_TT") { $OU = "OU=Workstations,OU=TT,OU=Computers,OU=UFA,OU=Regions,DC=tsretail,DC=ru" } elseif ($Region -eq "UFA_S") { $OU = "OU=1C-servers,OU=TT,OU=Computers,OU=UFA,OU=Regions,DC=tsretail,DC=ru" } elseif ($Region -eq "SPB_TT") { $OU = "OU=Workstations,OU=TT,OU=Computers,OU=SPB,OU=Regions,DC=tsretail,DC=ru" } elseif ($Region -eq "SPB_S") { $OU = "OU=Servers,OU=TT,OU=Computers,OU=SPB,OU=Regions,DC=tsretail,DC=ru" } elseif ($Region -eq "EKT_TT") { $OU = "OU=Workstations,OU=TT,OU=Computers,OU=EKT,OU=Regions,DC=tsretail,DC=ru" } elseif ($Region -eq "EKT_S") { $OU = "OU=Servers,OU=TT,OU=Computers,OU=EKT,OU=Regions,DC=tsretail,DC=ru" } elseif ($Region -eq "VRN_TT") { $OU = "OU=Workstations,OU=TT,OU=Computers,OU=VRN,OU=Regions,DC=tsretail,DC=ru" } elseif ($Region -eq "VRN_S") { $OU = "OU=Servers,OU=TT,OU=Computers,OU=VRN,OU=Regions,DC=tsretail,DC=ru" } elseif ($Region -eq "RND_TT") { $OU = "OU=Workstations,OU=TT,OU=Computers,OU=RND,OU=Regions,DC=tsretail,DC=ru" } elseif ($Region -eq "RND_S") { $OU = "OU=Servers,OU=TT,OU=Computers,OU=RND,OU=Regions,DC=tsretail,DC=ru" } elseif ($Region -eq "NSK_TT") { $OU = "OU=Workstations,OU=TT,OU=Computers,OU=NSK,OU=Regions,DC=tsretail,DC=ru" } elseif ($Region -eq "NSK_S") { $OU = "OU=Servers,OU=TT,OU=Computers,OU=NSK,OU=Regions,DC=tsretail,DC=ru" } elseif ($Region -eq "MSK_B") { $OU = "OU=MainOffice,OU=Computers,OU=MSK,DC=tsretail,DC=ru" } elseif ($Region -eq "VLK_B") { $OU = "OU=Office,OU=Computers,OU=VLK,OU=Regions,DC=tsretail,DC=ru" } elseif ($Region -eq "SMR_B") { $OU = "OU=Office,OU=Computers,OU=SMR,OU=Regions,DC=tsretail,DC=ru" } elseif ($Region -eq "UFA_B") { $OU = "OU=Office,OU=Computers,OU=UFA,OU=Regions,DC=tsretail,DC=ru" } elseif ($Region -eq "SPB_B") { $OU = "OU=Office,OU=Computers,OU=SPB,OU=Regions,DC=tsretail,DC=ru" } elseif ($Region -eq "EKT_B") { $OU = "OU=Office,OU=Computers,OU=EKT,OU=Regions,DC=tsretail,DC=ru" } elseif ($Region -eq "VRN_B") { $OU = "OU=Office,OU=Computers,OU=VRN,OU=Regions,DC=tsretail,DC=ru" } elseif ($Region -eq "RND_B") { $OU = "OU=Office,OU=Computers,OU=RND,OU=Regions,DC=tsretail,DC=ru" } elseif ($Region -eq "NSK_B") { $OU = "OU=Office,OU=Computers,OU=NSK,OU=Regions,DC=tsretail,DC=ru" } Else { Write-Host "Usage: powershell $myscripname <filename with SQL query> [VLK_TT|MSK_TT|SMR_TT|UFA_TT|SPB_TT|EKT_TT|VRN_TT|RND_TT|NSK_TT|VLK_B|MSK_B|SMR_B|UFA_B|SPB_B|EKT_B|VRN_B|RND_B|NSK_B]" exit } #Указываем путь для выгрузки лога $logdate = $((get-date).tostring("ddMMyy HH_mm")) $log = "D:\bat\монитор\no_ping1.csv" #Задайте свой путь для логов $pcs2 = get-adcomputer -Filter {Enabled -eq 'True'} -Properties Name, whenCreated, CanonicalName, OperatingSystem, OperatingSystemServicePack, OperatingSystemVersion, LastLogonDate -SearchBase $OU | Select-Object Name, whenCreated, CanonicalName, LastLogonDate, OperatingSystem, OperatingSystemServicePack, OperatingSystemVersion $counter = $pcs2.count write-host "Прошлись по $OU. Получили $counter записей" -ForegroundColor Yellow "Имя ПК;OperatingSystem;доступность;результат проверки;LastLogonDate;CanonicalName;" | Out-File $log -Append -Encoding utf8 ForEach ($pc in $pcs2) { $Res = @() $forLog = @() $name = $pc.name $logon = $pc.LastLogonDate.tostring("dd.MM.yyyy") write-host $name -ForegroundColor Green if ((Test-Connection -Cn $name -Count 1 -quiet -ErrorAction SilentlyContinue) -eq $False) { Write-host "$name;не пингуется" $forLog = $name+";"+$pc.OperatingSystem+";"+"не пингуется;"+";$logon"+";"+$pc.CanonicalName $forLog | Out-File $log -Append -Encoding utf8 } else { Write-host "$name пингуется, выполняем проверку" $ofs = '' gwmi wmimonitorid -Namespace root\wmi -ComputerName $name | Select @{n=$name;e={([string][Char[]]$_.UserFriendlyName).SubString(0,$_.UserFriendlyNameLength)}}, @{n=' ';e={[string][Char[]]$_.SerialNumberID}} | Out-File C:\mon\3.csv -enc utf8 -Append } } |
|
Отправлено: 11:27, 08-05-2020 | #24 |
Старожил Сообщения: 211
|
Профиль | Отправить PM | Цитировать Как думаете, если из этого скрипта убрать пинг, будет ли быстрей перебор?
|
Отправлено: 11:47, 08-05-2020 | #25 |
Старожил Сообщения: 211
|
Профиль | Отправить PM | Цитировать Цитата YuS_2:
|
|
Отправлено: 19:50, 09-05-2020 | #26 |
Crazy Сообщения: 1232
|
Профиль | Отправить PM | Цитировать Цитата Griboed0ff:
Откуда вообще вот эта строка: Цитата Griboed0ff:
В исходном варианте разве так было? |
||
------- Отправлено: 20:56, 09-05-2020 | #27 |
Старожил Сообщения: 211
|
Профиль | Отправить PM | Цитировать Цитата YuS_2:
Цитата Busla:
скрипт запрашивает список пк с ou ad, пингует разок, если пингуется то выполняется команда, если нет то пишет куда там надо. |
||
Отправлено: 21:47, 09-05-2020 | #28 |
Crazy Сообщения: 1232
|
Профиль | Отправить PM | Цитировать Griboed0ff,
так, вот и сравните то, что я выделил... именно поэтому у Вас результат совсем не тот, что ожидается... Тут надо бы Вам показать, что получаете с нескольких компьютеров и что именно, необходимо получить... |
------- Последний раз редактировалось YuS_2, 09-05-2020 в 22:28. Отправлено: 22:20, 09-05-2020 | #29 |
Старожил Сообщения: 211
|
Профиль | Отправить PM | Цитировать Цитата YuS_2:
Скрытый текст
KHB-BUH-04 ---------- - HP W2072a CNC302Q39F VLK-AHO-04 ---------- - HP E231 3CQ4070Y4G KHB-IT-02 --------- - HP 2011 CNC215R5VH HP 2011 CNC215QNNF VLK-IT-06 --------- - HP E231 6CM42114X6 HP E231 6CM42114RY KHB-IT-04 --------- - HP 2011 CNC215QNNC HP E231 6CM42114X4 VLK-AHO-01 ---------- - HP W2072a CNC302Q39H KHB-DAOR-06 ----------- - SMB2230N HLOB101779 ASUS MW221C 78L80D5514 KHB-KRD-03 ---------- - HP W2072a CNC241PFMX KHB-STORE-03 ------------ - HP E231 3CQ4070YB5 VLK-DUO-03 ---------- - HP W2072a CNC302Q39B VLK-OB-02 --------- - HP E231 6CM421144B VLK-ROZN-10 ----------- - HP E231 3CQ3480R5R Скрытый текст
это имя пк, с которого снимаются данные, модель монитора, серийник, вторая модель, второй серийник(если мониторов 2) по идее и здесь можно через пошик 7 запараллелить для ускорения процесса как понимаю просто надо поместить в |
|
Последний раз редактировалось Griboed0ff, 09-05-2020 в 23:11. Отправлено: 22:54, 09-05-2020 | #30 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - [решено] Как из архивного образа системы извлечь нужные данные реестра? | ZurabK | Microsoft Windows Vista | 5 | 10-09-2020 12:08 | |
Прочие БД - Восстановить или извлечь данные из Jetxxx.tmp, временного файла MS Access DB | tweaxl | Программирование и базы данных | 2 | 18-06-2012 02:03 | |
CMD/BAT - [решено] как извлечь все значения определенного ключа реестра из определенной ветки | baza450 | Скриптовые языки администрирования Windows | 6 | 27-12-2011 13:41 | |
HDD - Как извлечь данные с жёсткого диска | Alla65 | Накопители (SSD, HDD, USB Flash) | 8 | 17-04-2009 18:27 | |
MySQL - [решено] Извлечь данные одним запросом | Strange_V | Программирование и базы данных | 4 | 20-02-2008 23:18 |
|