Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Работа с доменными компьютерами (http://forum.oszone.net/showthread.php?t=342540)

Prosto_Ivan 15-10-2019 11:41 2892114

Работа с доменными компьютерами
 
Всем доброго дня! Есть следующая проблема: Нужно создать скрипт инвентаризации компов.
$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 строчкой, разделенных запятой? Если да то как это сделать?

Если данный вопрос уже ранее обсуждался прошу прощения, укажите на ту же проблему и ответ на нее, заранее благодарен!

Ageron 15-10-2019 12:16 2892124

Код:

$Computers = Get-ADComputer -Filter * -Properties *
Foreach ($Computer in $Computers)
{
        test-connection $Computer.Name
}


Charg 15-10-2019 15:33 2892162

Цитата:

Цитата Prosto_Ivan
Если сделать test-connection $comps то сыпятся ошибки такого рода: Test-Connection : Не удалось протестировать подключение к компьютеру "Microsoft.PowerShell.Commands.Internal.F
ormat.FormatEndData": Этот хост неизвестен »

А как ты собрался тестировать NetConnection c массивом? Коннекшн может быть с каждым компьютером отдельно, но не с общей кучей.
Всегда надо понимать данные какого типа ты передаешь командлету, и узнать это можно двумя способами:

1. $variable | Get-Member

2. $variable.GetType()

Цитата:

Цитата Prosto_Ivan
Нужно создать скрипт инвентаризации компов. »

Если это доменная среда - не изобретай велосипед. Есть офигенный софт для этого, бесплатной версии которого для инвентаризации хватает за глаза.
https://www.pdq.com/pdq-inventory/

DJ Mogarych 15-10-2019 16:33 2892168

или GLPI - https://glpi-project.org/ru/

Prosto_Ivan 15-10-2019 19:01 2892188

Ageron, большое человеческое спасибо! Не знал что есть переменные для цикла, работающая чисто в нем и нигде больше. Думал уже выгружать имена текстом, как-то эти данные обработать, расставить после каджого слова запятые и сувать в тест-коннекшн >_<

DJ Mogarych, готовое решение брать не буду, хочу сам разобраться как это работает.

Charg, именно непонимание типов данных меня походу и останавливало


Всем еще раз спасибо, если столкнусь с непреодолимыми (с моей стороны) вопросами продолжу писать сюда. Надеюсь в конце этой темы выложу хорошее решение для данной задачи =)

DJ Mogarych 15-10-2019 22:30 2892217

Ну, GLPI - это не очень готовое решение, его надо ещё как минимум установить и настроить, а ещё расставить агентов на клиентские тачки политикой.

Цитата:

Цитата Prosto_Ivan
LastLogonDate »

LastLogonDate фактически бесполезен - если эта дата достаточно новая (то ли 2 недели, то ли 2 месяца, точно не помню), то время будет неточным, т.к. этот параметр нереплицируемый между контроллерами домена.

Цитата:

Цитата Prosto_Ivan
хочу сам разобраться как это работает »

Это прекрасно, интересно, что конкретно вы хотите инвентаризировать.

Charg 16-10-2019 09:37 2892255

Цитата:

Цитата DJ Mogarych
а ещё расставить агентов »

Фе, PDQ Inventory работает без агентов. Ну то есть технически агент там есть он он автоматически устанавливается, делает что надо и потом удаляется.

Prosto_Ivan 16-10-2019 10:33 2892262

Цитата:

Цитата DJ Mogarych
Это прекрасно, интересно, что конкретно вы хотите инвентаризировать. »

В моей голове это выглядит так: пишем в файл имена компов(автоматом все подтягивается из АД, ничего не надо вбивать руками), сопоставляем пользовательские учетки с компами(какая учетка на каком компе сейчас и какие были раньше, то есть и активные сессии смотрим тоже, дату и время тоже пишем). Также хотелось бы ввести отдельный столбец со статусом битлокера на каждой тачке(можно даже boulean, true or false).вся эта братия должна быть читаема как для человека, так и для машины, в дальнейшем хочу чтобы эти данные кушал 1с. Если интересно периодически могу выкладывать промежуточные результаты моего труда)

Charg 16-10-2019 10:50 2892264

Prosto_Ivan, т.е. результатом работы твоего скрипта является файл с данными внутри? Т.е. фактически база данных, но в файле. Это так не делается :)

Prosto_Ivan 16-10-2019 12:11 2892287

Charg, а как это видишь ты? поднять БД ради 4 столбцов и все время обращаться к ней? как видится мне: я всегда имею файл, который можно прочитать своими глазками и понять что чтото идет не так, который могу скормить и 1с и заббиксу и кому угодно.

Charg 16-10-2019 12:31 2892294

Prosto_Ivan, либо базу данных (ты ж историю заходов пользователей вести хочешь?) либо сразу заливай в 1с и заббикс, зачем файл в лице бесполезного посредника?
К тому же, насколько я понял, тут больше интерес в том чтобы научиться делать чем в том чтобы пользоваться результатом (потому что готовые решения то они и так уже есть) - тем лучше, заодно и с базами научишься работать, этот навык бесполезным назвать нельзя никак. Потому что самый действенный, как по мне, способ чему-то научиться - попробовать, нифига естесственно с первого раза не получится, и дальше ковырять всё это попутно решая всплывающие нюансы.

DJ Mogarych 16-10-2019 13:50 2892327

Цитата:

Цитата Prosto_Ivan
ради 4 столбцов »

Ради 4 столбцов вообще ничего не нужно, ни какой-то отдельной БД, ни файлов.

У вас уже есть AD - это прекрасная база данных. Сделайте логон-скрипт, который пишет обратно в AD те параметры, которые вам нужны.

Вот пример: http://forum.oszone.net/post-2889487.html#post2889487

vkz 09-02-2020 00:18 2908828

Prosto_Ivan, я так и не понял что ты хочешь получить на выходе от скриптов? Какая цель инвентаризации?
test-connection это просто PING.

Для ping-а всех ПК домена лучше использовать workflow. Так будет быстрее. На выходе показывает всё, что пингуется.

Test-Connection
Код:

$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



Время: 10:46.

Время: 10:46.
© OSzone.net 2001-