Полная инвентаризация компьютеров в домене
Подскажите пожалуйста, как на PowerShell создать скрипт для полной инвентаризации компьютеров в домене?
может кто писал уже такое, или у кого завалялся подобный скрипт? буду очень благодарен и признателен за помощь)
Инвентаризация основных комплектующих всех компьютеров в домене
Люди, всем, привет. Я сисадмин, а мой начальник — главный сисадмин — попросил меня написать в.
Закрывается explorer сам по себе. У всех компьютеров в домене Active Directory
Добрый день. В локальной сети по какой-то причине начал сам по себе закрываться explorer на всех.
Поиск компьютеров в домене
Всем добрый день. Есть ли возможность найти компьютеры в домене,по логину пользователя? Иными.
Отображение учетной записи компьютеров в домене
Задача, есть ряд компьютеров, необходимо знать какой пользователь сидит за "машиной" на момент.
пользую следующую функцию. Для полной инвентаризации ее не достаточно, но можно доделать.
права конечно должны быть админские.
в не доменной среде не тестировалась.
Ипользование сокетов: создать свой мониторинг компьютеров в домене
Хочу создать свой мониторинг компьютеров в домене. Алгоритм работы: на компах установлены агенты по.
Компьютер в домене не может добавить программу из другого компьютера который не в домене
Компьютер в домене не может добавить программу из другого компьютера который не в домене он.
Управление сервером Hyper-v в домене, из клиента, находящего в другом домене
Доброго времени суток. Ситуация такая. Сама архитектура глупой может быть получилась но так надо.
Не работает IFrame на русскоязычном домене в домене рф
Кто-нибудь сталкивался с таким что не работает iframe в русскоязычном домене? Уже думаю что только.
Инвентаризация компьютеров в домене
PowerShell — [решено] Инвентаризация компьютеров (По данным из AD, из файла, или просто указав имя компа)
Сообщения: 169
Благодарности: 4
Вот решил поделиться еще одним скриптом.
Скрипт для инвентаризации компьютеров в сети (По данным из Active Directory, из файла со списком IP или именами компов, или просто указав имя компа или IP в отдельном окне).
1.Запускаем, выбираем нужный вариант сканирования (Например можно получить инфу о своей тачке так — в первом окне выбираем N, во втором 4, в третьем имя или адрес компа )
2.Ждем когда скрипт закончит работу
3.На выходе получаем открывшееся окно Excel с несколькими листами General, System, Processor, Memory, Disk, Network — с информацией о машине.
Сообщения: 1
Благодарности: 0
Люди, всем, привет. Я сисадмин, а мой начальник — главный сисадмин — попросил меня написать в PowerShell’е скрипт, дабы снять со всех компов серийники основных
устройств, которые онлайн в его домене, их там 400 штук пк (или просто в базе данных active directory) и вывести всю инфу в текст или эксель — дабы потом сделать базу
данных всех главных комплектующих с их названием, серийниками и характеристиками. Вот вопрос — как это сделать?)) Вот что придумал, написал на свой пк:
get-wmiobject win32_BaseBoard | select Name, Manufacturer, SerialNumber | format-list | out-file C:UsersKarbofosDesktopInfo.txt
get-wmiobject win32_Bios | format-list | out-file -append C:UsersKarbofosDesktopInfo.txt
get-wmiobject win32_Processor | select Name, Manufacturer, ProcessorID | format-list | out-file -append C:UsersKarbofosDesktopInfo.txt
get-wmiobject win32_PhysicalMemory | select Name, Manufacturer, Capacity, SerialNumber | format-list | out-file -append C:UsersKarbofosDesktopInfo.txt
get-wmiobject win32_DiskDrive | select Name, Model, Size, Caption | format-list | out-file -append C:UsersKarbofosDesktopInfo.txt
get-wmiobject win32_NetworkAdapter | select Name, MacAddress | format-list | out-file -append C:UsersKarbofosDesktopInfo.txt
но надо, чтоб все это как скрипт с ярлычка запускалось и сканило, наверное, все пк в домене. Подскажите как это сделать, пожалуйста.
Загрузка и установка
Скрипт для инвентаризации компьютеров средствами WMI и VBScript, упакован ZIP: invent_comp.zip
Установка не требуется, достаточно распаковать архив в отдельный каталог на рабочей станции администратора.
Получить список версий и билдов Windows в домене Active Directory
17.01.2022
itpro
Active Directory, PowerShell, Windows 10, Windows 11
Комментариев пока нет
В статье рассмотрим несколько способов инвентаризации версии и билдов Windows (особенно актуально это для Windows 10) в домене Active Directory. Если у вас средств автоматизации сбора конфигураций компьютеров, например SCCM, GLPI c FusionInventory, или хотя бы сервер обновлений WSUS (он также позволяет показать версию Windows на обнаруженных компьютерах), вы можете использовать PowerShell скрипт для получения билдов Windows на компьютерах.
На отдельно-стоящем компьютере Windows можно получить номер билда из реестра или из SystemInfo:
Get-ItemProperty ‘HKLM:SOFTWAREMicrosoftWindows NTCurrentVersion’ | Select-Object ProductName, ReleaseID, CurrentBuild
Get-ComputerInfo | select WindowsProductName, WindowsVersion, OsHardwareAbstractionLayer
Для получения списка активных компьютеров в домене Active Directory и версий (билдов) Windows на них можно использовать командлет Get-ADComputers.
Убедитесь, что на вашем компьютере установлен модуль Active Directory PowerShell и выполните команду:
Get-ADComputer -Filter <(Enabled -eq $True)>-Property * | Select-Object Name,OperatingSystem,OperatingSystemVersion
Чтобы преобразовать номер билда Windows 10 и 11 в более привычный формат (21H1, 21H2 и т.д.), нужно использовать дополнительную функцию.
function ConvertWindowsBuild[CmdletBinding()]
param(
[string] $OperatingSystem,
[string] $OperatingSystemVersion
)
if (($OperatingSystem -like ‘*Windows 10*’) –or ($OperatingSystem -like ‘Windows 11*’)) $WinBuilds= @’10.0 (22000)’ = «Windows 11 21H2»
‘10.0 (19044)’ = «Windows 10 21H2»
‘10.0 (19043)’ = «Windows 10 21H1»
‘10.0 (19042)’ = «Windows 10 20H2»
‘10.0 (18362)’ = «Windows 10 1903»
‘10.0 (17763)’ = «Windows 10 1809»
‘10.0 (17134)’ = «Windows 10 1803»
‘10.0 (16299)’ = «Windows 10 1709»
‘10.0 (15063)’ = «Windows 10 1703»
‘10.0 (14393)’ = «Windows 10 1607»
‘10.0 (10586)’ = «Windows 10 1511»
‘10.0 (10240)’ = «Windows 10 1507»
‘10.0 (18898)’ = ‘Windows 10 Insider Preview’
>
$WinBuild= $WinBuilds[$OperatingSystemVersion]
>
else
if ($WinBuild) $WinBuild
> else ‘Unknown’
>
>
Теперь, чтобы получить список версий Windows с названиями билдов, IP адресами, и датой последнего входа (регистрации) компьютера в домене, выполните следующий PowerShell скрипт:
$Comps= Get-ADComputer -Filter <(Enabled -eq $True)>-properties *
$CompList = foreach ($Comp in $Comps) [PSCustomObject] @Name = $Comp.Name
IPv4Address = $Comp.IPv4Address
OperatingSystem = $Comp.OperatingSystem
Build = ConvertWindowsBuild -OperatingSystem $Comp.OperatingSystem -OperatingSystemVersion $Comp.OperatingSystemVersion
LastLogonDate = $Comp.LastLogonDate
>
>
$CompList | Out-GridView
Результат предоставлен в виде таблицы Out-Gridview либо экспортировать в CSV ( Export-Csv -Path .win_builds_report.csv -NoTypeInformation ).
Чтобы вывести суммарную статистику по количеству компьютеров с разными версиями Windows в домене:
$CompList | Group-Object -Property Build | Format-Table -Property Name, Count
Также можно удаленно опрашивать компьютеры и получить версию Windows на них через PowerShell Remoting. Этот метод намного более медленный, но позволить получить версию Windows на компьютерах, которые находятся в рабочей группе (как через PSRemoting удаленно подключиться к компьютеру в рабочей группе). Для получения информации с удаленных компьютеров можно использовать командлет Invoke-Command:
Можно получить версию Windows на нескольких компьютеров по списку из txt файла:
С помощью рассмотренных PowerShell скриптов вы сможете определить версии и билды Windows на компьютерах домена, найти компьютеры с устаревшими билдами Windows 10 и обновить их (пример обновления билда Windows 10 из командной строки).
Инвентаризация компьютеров в домене. Лень-двигатель прогресса
Всех приветствую.
Недавно начальство попросило меня подумать над вопросом о сборе информации о комплектации компьютеров у нас в домене. Сначала просьба была только на счет процессоров памяти и жестких дисков. Первая мысль — хождение по отделам и просьба освободить компьютер на минутку. В случае с 1 компьютером не сложно, но если их 1500. Мысли были направленны в сторону PowerShell.
Для начала надо было извлечь список всех компьютеров в домене. В данном примере мой домен Test.lan. Импортируем весь этот список в файл AllComputers.csv.
Для этого не забываем добавить модуль АД для PS. У меня на рабочем месте он прописан в профиле, и вам советую сделать тоже самое:
import-module activedirectory
get-ADcomputer -Filter * |
Where-Object |
Sort-Object name | Select-Object name | Export-csv C:InventAllComputers.csv -NoTypeInformation
Здесь надо пояснить, что у меня в домене есть папка Disable, где располагаются учетные записи всех отключенных компьютеров. Если они отключены, то какой смысл к ним стучаться. По этому эту папку мы исключаем из поиска.
Всем понятно, что далеко не все компьютеры, которые находятся в домене, включены, работают или вообще имеют место быть. По этому перед тем, как перейти к проверке, мы проверяем связь с ним. Конечно можно этого не делать, если у вас 100 компьютеров. А если у вас 2000 компьютеров, потеря времени при количестве выключенных компьютеров порядка 800 съест у вас не мало времени. Так же стоит сразу вспомнить компьютеры, к которым у нас нет доступа. Так же смысла стучаться в их дверь нет.
import-csv c:InventAllComputers.csv | foreach $a=
[H1toH2]
.name
if ((Test-connection $a -count 2 -quiet) -eq «True»)
if ((Get-WmiObject -computername $a Win32_OperatingSystem) -eq $null)
Многие могут возразить:
«Для чего такие сложности? Зачем сначала делать список а потом импортировать его. Не легче ли сразу?»
Согласен, легче. Но иметь перед глазами список компьютеров, согласитесь, приятно. К тому же, список пронумерован. И Вы всегда знаете сколько у вас компьютеров в АД.
Для теста соединения выбрал cmdlet Test-connection с параметром -quiet, дабы нам не выдавались строчки с разной информацией, а просто выдавался ответ: True or False. При чем мы сокращаем количество запросов с 2 до 4.
Если мы постучимся к компьютеру с WMI запросом, а прав на такое действие у нас нет, получим кучу строчек красного цвета с ошибками. Так что сразу отфильтровываем такие компьютеры пробным WMI запросом
Любую информацию (наверное, почти любую) можно узнать, если залезть в WMI объекты, а PS позволяет это делать просто на ура. Так что я сразу углубился в поиски нужных WMI объектов.
Здесь можно поглядеть все классы с их атрибутами.
Убедившись, что компьютер в сети, что доступ у нас к нему есть, смотрим его внутренности:
Write-Host «Проверка компьютера » -ForeGroundColor Green $a
«Компьютер» | out-file c:InventComp$a.txt
Get-WmiObject -computername $a Win32_OperatingSystem |
select-object csname, caption, Serialnumber, csdVersion |
ft @>,
@>,
@>,
@> -auto -wrap |
out-file c:InventComp$a.txt -append
Get-WmiObject -computername $a Win32_ComputerSystemProduct | select-object UUID |
ft UUID -autosize | out-file c:InventComp$a.txt -append
«Процессор» | out-file c:InventComp$a.txt -append
Get-WmiObject -computername $a Win32_Processor | select-object name, SocketDesignation, Description |
ft @>,
@>,
@> -auto -wrap | out-file c:InventComp$a.txt -append
«Материнская плата» | out-file c:InventComp$a.txt -append
Get-WmiObject -computername $a Win32_BaseBoard | select-object Manufacturer, Product, SerialNumber |
ft @>,
@>,
@> -auto -wrap |
out-file c:InventComp$a.txt -append
«Жесткие диски» | out-file c:InventComp$a.txt -append
Get-WmiObject -computername $a Win32_DiskDrive | select-object Model, Partitions, Size, interfacetype |
ft @>,
@>,
@>,
@> -auto -wrap |
out-file c:InventComp$a.txt -append
«Логические диски» | out-file c:InventComp$a.txt -append
Get-WmiObject -computername $a Win32_LogicalDisk -Filter «DriveType=3» | select-object DeviceID, FileSystem, Size, FreeSpace |
ft @>,
@>,
@>,
@> -auto -wrap |
out-file c:InventComp$a.txt -append
«Оперативная память» | out-file c:InventComp$a.txt -append
Get-WmiObject -computername $a Win32_Physicalmemory | Select-Object capacity, DeviceLocator |
ft @>,
@> -auto -wrap |
out-file c:InventComp$a.txt -append
«Видеокарта» | out-file c:InventComp$a.txt -append
Get-WmiObject -computername $a Win32_videoController |
Select-Object name, AdapterRAM, VideoProcessor |
ft @>,
@>,
@> -auto -wrap |
out-file c:InventComp$a.txt -append
«Сетевая карта» | out-file c:InventComp$a.txt -append
$OS=Get-WmiObject -computername $a Win32_OperatingSystem | foreach
if ($OS -eq «Microsoft Windows 2000 Professional»)
Get-WmiObject -computername $a Win32_NetworkAdapterConfiguration -Filter «DHCPEnabled=True» |
Select-Object caption,MACaddress |
ft @
Вся информация о компьютере падает в текстовый файл.
Здесь стоит остановить внимание на 2 моментах.
Во-первых, строчку Write-Host «Проверка компьютера » -ForeGroundColor Green $a я делал исключительно для себя, ибо приятно знать чем занимается в данный момент PowerShell.
Во-вторых, для чего мы перед проверкой сетевой карты проверяем ОС.
К сожалению, Windows 2000 не отвечает на запрос Win32_NetworkAdapter, по этому к ней мы применяем запрос Win32_NetworkAdapterConfiguration. Почему не оставить только последний? Можно оставить, но Win32_NetworkAdapter выдает такой атрибут, как Name, когда в его аналоге только Caption. Мелочь, а приятно.
Так же можете видеть, что при проверки сетевой карты, мы проверяем ее на работоспособность, иначе мы получим список еще из нескольких карт, которые в данный момент Вас не интересуют. Вам это надо?
Вот в принципе и все.
Скрипт можно доработать до своих потребностей.
Так что теперь начальство вряд ли напугает вас инвентаризацией компьютеров.
[/H1toH2]
Экспорт данных в CSV и открытие в Excel
Команда, которая эскортирует данные, называется Export-CSV. Если вы не исключаете программы, то можете выполнить ее так:
В нашем случае файл будет сохранен на диске C, под именем programs.csv. При появлении ошибок при экспорте с кодировками, делиметром (разделителем), до записью вы можете попробовать исправить прочитав эту статью «Powershell экспорт и запись в CSV файл».
Если вы исключаете программы, то можете выполнить ее так:
Открыв Excel и выбрав следующий пункт выберете файл в проводнике:
В новом окне посмотреть на разделитель, который используется, и нажать «Далее»:
Выбрать разделитель (будет либо запятая или точка-запятая):
Результат будет примерно следующим:
Если выделить шапку (как в примере выше) и нажать «Фильтр», то сможете более удобно фильтровать результат.