Joolz
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Drunken Master Еще раз АГРОМНАЭ спасибо за помощь. Наконец дошли руки, и я доваял скрипт. Код: ###########Скрипт использует ActiveRoles Management Shell for Active Directory от Quest Software. Взять его можно по ссылке : http://www.quest.com/powershell/activeroles-server.aspx############ #Для корректной работы скрипта нужно заменить dc.domain.ru на имя домен-контроллера #Для определения модели монитора нужен файл вида: PNPDeviceID DeviceName. #Таблицу с большим количеством PNPDeviceID можно взять по адресу http://listing.driveragent.com/pnp/ param ($z) function helpme { write-host -fore White -back DarkGray "`n Добавление конфигурации компьютеров ActiveDirectory в их описание" write-host "`n Скрипт записывает в пустые описания (Description) компьютеров, находящихся в определенной ветке/подразделении/контейнере AD, их конфигурацию в виде: модель процессора, модель материнской платы, объем оперативной памяти, объем винчестера(-ов), дата заведения в AD." write-host " Например: " -no write-host -fore Green "Celeron 1.70GHz, D845GLVA, 40GB, 256MB, ATI RADEON 9550, NEC Multisync 1970NX (21.08.2008)" write-host "`n Для запуска скрипта в качестве параметра нужно указать ветку/подразделение/контейнер/объект AD." write-host " Например: " -no write-host -fore Green "ConfigToDescription.ps1 domain.ru/container1/container14" write-host "`n Если ветка/подразделение/контейнер/объект AD содержит пробелы, то его/её нужно заключать в ковычки." write-host " Например: " -no write-host -fore Green "ConfigToDescription.ps1 \"domain.ru/container one/container14\"" write-host "`n Скрипт использует Download ActiveRoles Management Shell for Active Directory от Quest Software" write-host " Адрес: " -no write-host -fore Green " http://www.quest.com/powershell`n" exit } if ($z -like '' -or $z -imatch "[?]" -or $z -imatch "(help)" ) {helpme} ############################# Запрс login/password для доступа к объектам AD ################################################################################### $c=get-credential -credential administrator@domain.ru $dc="dc.domain.ru" $drvpath="C:\DRV\all.drv" connect-QADService -service $dc -credential $c 2>CTD.log | Out-Null $comps=Get-QADObject -Credential $c -searchroot "$z" -type Computer 2>>CTD.log | Where {$_.OSName -notlike '*Server*'} foreach ($comp in $comps) { $compname=$comp.name ping $compname /n 1 | Out-Null if ($LastExitCode -ne 0) { "$compname не найден в сети." } else { $compname>>CTD.log ############################# Проверяем количество ядер и запоминаем модель процессора ######################################################################### (Get-WmiObject Win32_Processor -ComputerName $compname -Credential $c 2>>CTD.log) | Select-Object -First 1 | ForEach-Object {$cpu = $_.Name -Replace 'Intel\(R\) ','' -Replace '\(TM\)','' -Replace'\(R\)','' -Replace"CPU","" -Replace "\s{2,}"," " -Replace "^\s+",""} if(((Get-WmiObject Win32_Processor -ComputerName $compname -Credential $c 2>>CTD.log) | Select-Object -First 1 | ForEach-Object {$_.ProcessorID}) -eq 'BFEBFBFF00010676') {$cpu = "Core2 E8200 2.66GHz"} ############################# Если модель не разрешилась, то сервер RPC недоступен или доступ запрещен ############################################################### if ($cpu -eq "") { "$($compname): Сервер RPC недоступен или доступ запрещен." continue; } ############################# Узнаем модель материнской платы ############################################################################################ $mb = (Get-WmiObject Win32_BaseBoard -ComputerName $compname -Credential $c 2>>CTD.log).Product -Replace "\s+","" ############################# Определяем количество винчестеров и запоминаем их объем ########################################################################## Get-WmiObject Win32_DiskDrive -Filter "MediaType LIKE 'Fixed%'" -ComputerName $compname -Credential $c 2>>CTD.log | Where {$_.PNPDeviceID -LIKE "IDE*"} | ForEach-Object {$hdd = ""}{$hdd += "{0:0}GB, " -f ($_.Size/1e+9)}{$hdd = $hdd.Trim(' ,')} ############################# Поределяем объем оперативной памяти ########################################################################################### $ram = "{0:0}MB" -f ((Get-WmiObject Win32_PhysicalMemory -ComputerName $compname -Credential $c 2>>CTD.log) | Foreach-Object {$s=0}{$s +=$_.Capacity}{$s / 1MB}) ############################# Поределяем объем оперативной памяти ########################################################################################### $vga=(Get-WmiObject Win32_VideoController -ComputerName $compname -Credential $c 2>>CTD.log | ? {$_.PNPDeviceID -like "PCI\Ven*"} | select -first 1).caption -Replace '\(R\)','' -Replace 'Family','' -Replace 'Series','' -Replace 'Controller','' -Replace 'Graphics','' -Replace 'Chipset','' -Replace '\s{2,}',' ' -Replace '\s$','' ############################# Поределяем объем оперативной памяти ########################################################################################### $mnt=(Get-WmiObject Win32_DesktopMonitor -ComputerName $compname -Credential $c 2>>CTD.log | ? {$_.PNPDeviceID -like "Display\*"}).PNPDeviceID -replace "^(.+\\)(.+)(\\.+)", '$2' -replace "^\s*$", "unknown" $mon=(select-string -path $drvpath -pattern "$mnt").Line -replace "$mnt ","" ############################# Задаем дату обновления ##################################################################################################### $add = (Get-Date).ToString("d") ############################# Записываем полученные даннные в описание компа ################################################################################## get-QADObject -SearchRoot "$comp" -Type Computer 2>>CTD.log | Where {$_.description -notlike "*$add*"} | set-QADObject -ObjectAttributes @{Description="$cpu, $mb, $hdd, $ram, $vga, $mon ($add)"} 2>>CTD.log | out-null "$compname - Ok!" ############################# Обнуляем значения для следующего цикла ######################################################################################## $cpu = $mb = $hdd = $ram = $add = $vga = $mnt = $mon= "" } } disconnect-QADService 2>>CTD.log | Содержимое файла all.drv | Всего записей: 100 | Зарегистр. 24-01-2008 | Отправлено: 18:23 07-08-2008 | Исправлено: Joolz, 17:53 28-08-2008 |
|