|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] извлечь данные о мониторах из реестра |
|
PowerShell - [решено] извлечь данные о мониторах из реестра
|
Старожил Сообщения: 211 |
Доброго всем времени суток! Есть задача получить данные о мониторах в винде, а именно модель и серийный номер. Данные хранятся в реестре ("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\DISPLAY") в бинарном виде. Есть батник DispEDID, который умеет считывать и переводить в читабельный вид модель и серийник. Проблема в том, что данный батник выдает данные только 1 монитора, а если их 2 или 3 то, покажет данные последнего. Мозгов переписать такой сложный батник не хватает. Подумал может эту задачу проще решить через ps, по идее надо просто снять данные, конвертировать на человеческий, отправить в .cvs
|
|
Отправлено: 12:07, 17-04-2020 |
Ветеран Сообщения: 1758
|
Цитата Griboed0ff:
|
|
Отправлено: 23:56, 09-05-2020 | #31 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Crazy Сообщения: 1232
|
Профиль | Отправить PM | Цитировать Цитата Griboed0ff:
Цитата:
... $pcs2|% { $Res = @() $forLog = @() $name = $_.name $logon = $_.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+";"+$_.OperatingSystem+";"+"не пингуется;"+";$logon"+";"+$_.CanonicalName $forLog | Out-File $log -Append -Encoding utf8 } else { Write-host "$name пингуется, выполняем проверку" $ofs = '' gwmi wmimonitorid -Namespace root\wmi -ComputerName $name | Select @{n='UserFriendlyName';e={([string][Char[]]$_.UserFriendlyName).SubString(0,$_.UserFriendlyNameLength)}}, @{n='SerialNumberID';e={[string][Char[]]$_.SerialNumberID}} |%{ [pscustomobject]@{ 'Name' = $name 'UserFriendlyName' = $_.UserFriendlyName.trim([char]0x0000) 'SerialNumberID' = $_.SerialNumberID.trim([char]0x0000) } } } } | convertto-csv -d ';' -notype| Out-File C:\mon\3.csv -enc utf8 -Append Griboed0ff, Кстати, да, в версии PS 7.0, это обязательно Цитата Foreigner:
|
|||
------- Отправлено: 00:13, 10-05-2020 | #32 |
Старожил Сообщения: 211
|
Профиль | Отправить PM | Цитировать Цитата YuS_2:
Скрытый текст
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 $pcs2|% { $Res = @() $forLog = @() $name = $_.name $logon = $_.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+";"+$_.OperatingSystem+";"+"не пингуется;"+";$logon"+";"+$_.CanonicalName $forLog | Out-File $log -Append -Encoding utf8 } else { Write-host "$name пингуется, выполняем проверку" $ofs = '' gwmi wmimonitorid -Namespace root\wmi -ComputerName $name | Select @{n='UserFriendlyName';e={([string][Char[]]$_.UserFriendlyName).SubString(0,$_.UserFriendlyNameLength)}}, @{n='SerialNumberID';e={[string][Char[]]$_.SerialNumberID}} |%{ [pscustomobject]@{ 'Name' = $name 'UserFriendlyName' = $_.UserFriendlyName.trim([char]0x0000) 'SerialNumberID' = $_.SerialNumberID.trim([char]0x0000) } } } } | convertto-csv -d ';' -notype| Out-File C:\Users\svushak2\Desktop\инвентаризация\mon\1005.csv -enc utf8 -Append если из core запускаю Скрытый текст
get-adcomputer: C:\Users\svushak2\Desktop\инвентаризация\mon\monitor_last2.ps1:71 Line | 71 | $pcs2 = get-adcomputer -Filter {Enabled -eq 'True'} -Properties N … | ~~~~~~~~~~~~~~ | The 'get-adcomputer' command was found in the module 'ActiveDirectory', but the module could not be | loaded. For more information, run 'Import-Module ActiveDirectory'. Прошлись по OU=Office,OU=Computers,OU=EKT,OU=Regions,DC=tsretail,DC=ru. Получили 0 записей Out-File: C:\Users\svushak2\Desktop\инвентаризация\mon\monitor_last2.ps1:98 Line | 98 | … ;' -notype| Out-File C:\Users\svushak2\Desktop\инвентаризация\mon\100 … | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | The process cannot access the file 'C:\Users\svushak2\Desktop\инвентаризация\mon\1005.csv' because it | is being used by another process. |
|
Отправлено: 13:55, 10-05-2020 | #33 |
Ветеран Сообщения: 1758
|
Цитата Griboed0ff:
Цитата Griboed0ff:
[code] Import-Module ActiveDirectory [/come] Цитата Griboed0ff:
|
|||
Отправлено: 15:34, 10-05-2020 | #34 |
Crazy Сообщения: 1232
|
Профиль | Отправить PM | Цитировать Цитата Griboed0ff:
Память никак не управляется, не предусмотрено в командлете, так что тут ничего нового не придумаем. Цитата Griboed0ff:
Цитата:
А вот вторая ошибка... тут, возможно, одновременная запись в один и тот же файл от разных процессов не получается у out-file, видимо придется export-csv использовать... |
|||
------- Отправлено: 15:46, 10-05-2020 | #35 |
Старожил Сообщения: 211
|
Профиль | Отправить PM | Цитировать Цитата Foreigner:
|
|
Отправлено: 16:24, 10-05-2020 | #36 |
Старожил Сообщения: 211
|
Профиль | Отправить PM | Цитировать Цитата YuS_2:
|
|
Отправлено: 16:45, 10-05-2020 | #37 |
Старожил Сообщения: 211
|
Профиль | Отправить PM | Цитировать Цитата YuS_2:
|
|
Отправлено: 19:39, 10-05-2020 | #38 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата YuS_2:
![]() |
|
Отправлено: 21:46, 10-05-2020 | #39 |
Старожил Сообщения: 211
|
Профиль | Отправить PM | Цитировать Цитата Griboed0ff:
|
|
Отправлено: 21:54, 10-05-2020 | #40 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - [решено] Как из архивного образа системы извлечь нужные данные реестра? | 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 |
|