Показать полную графическую версию : Работа с доменными компьютерами
Prosto_Ivan
15-10-2019, 11:41
Всем доброго дня! Есть следующая проблема: Нужно создать скрипт инвентаризации компов.
$comps= Get-ADComputer -Filter * -Properties * | Sort LastLogonDate | FT Name #получаю имена компов в переменной.
Как дальше работать с этими именами и вообще то ли я делаю? Если сделать test-connection $comps то сыпятся ошибки такого рода: Test-Connection : Не удалось протестировать подключение к компьютеру "Microsoft.PowerShell.Commands.Internal.F
ormat.FormatEndData": Этот хост неизвестен
Неверный формат данных
Как мне работать с Microsoft.PowerShell.Commands.Internal.Format.FormatEndData ?
Даже если я выведу имена, то сможет ли тест-коннекшн делать поочередно для каждого имени или надо как-то выводить 1 строчкой, разделенных запятой? Если да то как это сделать?
Если данный вопрос уже ранее обсуждался прошу прощения, укажите на ту же проблему и ответ на нее, заранее благодарен!
$Computers = Get-ADComputer -Filter * -Properties *
Foreach ($Computer in $Computers)
{
test-connection $Computer.Name
}
Если сделать test-connection $comps то сыпятся ошибки такого рода: Test-Connection : Не удалось протестировать подключение к компьютеру "Microsoft.PowerShell.Commands.Internal.F
ormat.FormatEndData": Этот хост неизвестен »
А как ты собрался тестировать NetConnection c массивом? Коннекшн может быть с каждым компьютером отдельно, но не с общей кучей.
Всегда надо понимать данные какого типа ты передаешь командлету, и узнать это можно двумя способами:
1. $variable | Get-Member
2. $variable.GetType()
Нужно создать скрипт инвентаризации компов. »
Если это доменная среда - не изобретай велосипед. Есть офигенный софт для этого, бесплатной версии которого для инвентаризации хватает за глаза.
https://www.pdq.com/pdq-inventory/
DJ Mogarych
15-10-2019, 16:33
или GLPI - https://glpi-project.org/ru/
Prosto_Ivan
15-10-2019, 19:01
Ageron, большое человеческое спасибо! Не знал что есть переменные для цикла, работающая чисто в нем и нигде больше. Думал уже выгружать имена текстом, как-то эти данные обработать, расставить после каджого слова запятые и сувать в тест-коннекшн >_<
DJ Mogarych, готовое решение брать не буду, хочу сам разобраться как это работает.
Charg, именно непонимание типов данных меня походу и останавливало
Всем еще раз спасибо, если столкнусь с непреодолимыми (с моей стороны) вопросами продолжу писать сюда. Надеюсь в конце этой темы выложу хорошее решение для данной задачи =)
DJ Mogarych
15-10-2019, 22:30
Ну, GLPI - это не очень готовое решение, его надо ещё как минимум установить и настроить, а ещё расставить агентов на клиентские тачки политикой.
LastLogonDate »
LastLogonDate фактически бесполезен - если эта дата достаточно новая (то ли 2 недели, то ли 2 месяца, точно не помню), то время будет неточным, т.к. этот параметр нереплицируемый между контроллерами домена.
хочу сам разобраться как это работает »
Это прекрасно, интересно, что конкретно вы хотите инвентаризировать.
а ещё расставить агентов »
Фе, PDQ Inventory работает без агентов. Ну то есть технически агент там есть он он автоматически устанавливается, делает что надо и потом удаляется.
Prosto_Ivan
16-10-2019, 10:33
Это прекрасно, интересно, что конкретно вы хотите инвентаризировать. »
В моей голове это выглядит так: пишем в файл имена компов(автоматом все подтягивается из АД, ничего не надо вбивать руками), сопоставляем пользовательские учетки с компами(какая учетка на каком компе сейчас и какие были раньше, то есть и активные сессии смотрим тоже, дату и время тоже пишем). Также хотелось бы ввести отдельный столбец со статусом битлокера на каждой тачке(можно даже boulean, true or false).вся эта братия должна быть читаема как для человека, так и для машины, в дальнейшем хочу чтобы эти данные кушал 1с. Если интересно периодически могу выкладывать промежуточные результаты моего труда)
Prosto_Ivan, т.е. результатом работы твоего скрипта является файл с данными внутри? Т.е. фактически база данных, но в файле. Это так не делается :)
Prosto_Ivan
16-10-2019, 12:11
Charg, а как это видишь ты? поднять БД ради 4 столбцов и все время обращаться к ней? как видится мне: я всегда имею файл, который можно прочитать своими глазками и понять что чтото идет не так, который могу скормить и 1с и заббиксу и кому угодно.
Prosto_Ivan, либо базу данных (ты ж историю заходов пользователей вести хочешь?) либо сразу заливай в 1с и заббикс, зачем файл в лице бесполезного посредника?
К тому же, насколько я понял, тут больше интерес в том чтобы научиться делать чем в том чтобы пользоваться результатом (потому что готовые решения то они и так уже есть) - тем лучше, заодно и с базами научишься работать, этот навык бесполезным назвать нельзя никак. Потому что самый действенный, как по мне, способ чему-то научиться - попробовать, нифига естесственно с первого раза не получится, и дальше ковырять всё это попутно решая всплывающие нюансы.
DJ Mogarych
16-10-2019, 13:50
ради 4 столбцов »
Ради 4 столбцов вообще ничего не нужно, ни какой-то отдельной БД, ни файлов.
У вас уже есть AD - это прекрасная база данных. Сделайте логон-скрипт, который пишет обратно в AD те параметры, которые вам нужны.
Вот пример: http://forum.oszone.net/post-2889487.html#post2889487
Prosto_Ivan, я так и не понял что ты хочешь получить на выходе от скриптов? Какая цель инвентаризации?
test-connection это просто PING.
Для ping-а всех ПК домена лучше использовать workflow. Так будет быстрее. На выходе показывает всё, что пингуется.
$computers = Get-ADComputer -Filter * | Select -ExpandProperty DNSHostName
workflow Test-WFConnection {
param(
[string[]]$Computers
)
foreach -parallel ($computer in $computers) {
Test-Connection -ComputerName $computer -Count 1 -ErrorAction SilentlyContinue
}
}
Test-WFConnection $computers | Format-Table -AutoSize
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.