СЦЕНАРИЙ
Чтобы упростить это до самого простого примера:
У меня есть стандартный Windows DC 2008 R2 с ролью DHCP-сервера. Он раздает IP-адреса через различные области IPv4, никаких проблем нет.
Что бы я хотел
Я хотел бы создать способ создания уведомления / записи в журнале событий / аналогичный всякий раз, когда устройство получает аренду DHCP-адреса, и это устройство НЕ является присоединенным к домену компьютером в Active Directory. Мне не важно, является ли это пользовательским Powershell и т. Д.
Итог = Я хотел бы узнать, когда в сети находятся не доменные устройства без использования 802.1X. Я знаю, что это не будет учитывать статические IP-устройства. У меня есть программное обеспечение для мониторинга, которое будет сканировать сеть и находить устройства, но это не настолько детально.
ИССЛЕДОВАНИЕ ВЫПОЛНЕНО / РАССМОТРЕНЫ ВАРИАНТЫ
Я не вижу таких возможностей со встроенной регистрацией.
Да, я знаю о стандарте 802.1X и могу реализовать его в течение длительного времени в этом месте, но мы находимся на некоторое время вдали от подобного проекта, и хотя это решило бы проблемы сетевой аутентификации, это все еще полезно для меня за пределами целей 802.1X.
Я искал некоторые фрагменты сценария и т. Д., Которые могли бы оказаться полезными, но то, что я нашел, наводит меня на мысль, что мое google-fu в данный момент меня подводит.
Я считаю, что приведенная ниже логика является обоснованной ( при условии, что не существует какого-либо существующего решения ):
- Устройство получает адрес DHCP
- Запись журнала событий записывается (в журнале аудита DHCP должно работать событие с идентификатором 10 (поскольку меня больше всего интересует аренда, а не продление): http://technet.microsoft.com/en-us/library /dd759178.aspx )
- На этом этапе какой-то сценарий, вероятно, должен был бы вступить во владение для оставшихся «ШАГОВ» ниже.
- Каким-то образом запросите в этом журнале DHCP эти события с идентификатором 10 (мне бы очень хотелось, чтобы push, но я предполагаю, что pull - единственный выход)
- Разобрать запрос на имя устройства, которому назначен новый лизинг
- Запросите AD для имени устройства
- Если не найден в AD, отправьте уведомление по электронной почте
Если у кого-то есть идеи о том, как правильно это сделать, я бы очень признателен. Я не ищу «дай мне код», но хотел бы знать, есть ли альтернативы вышеприведенному списку, или я не совсем уверен, и существует ли другой способ сбора этой информации. Если у вас есть фрагменты кода / команды PS, которыми вы хотели бы поделиться для достижения этой цели, тем лучше.
Ответы:
Огромное спасибо ErikE и остальным здесь, я пошел по пути ... Я не скажу, что это правильный путь, но сценарий Powershell, который я придумал, делает свое дело.
Код ниже, если кто-то хочет. Просто запустите его вручную, указывая на каждый DHCP-сервер или запланируйте его (снова указывая на каждый DHCP-сервер в сценарии).
Что делает скрипт:
Что вам нужно:
В сценарии используется модуль AD (
import-module activedirectory
), поэтому его лучше всего запускать на AD DC с DHCP. Если это не так, вы можете установить модуль AD powershell: http://blogs.msdn.com/b/rkramesh/archive/2012/01/17/how-to-add-active-directory- модуль-в-PowerShell-в-окна-7.aspxВам также понадобятся командлеты AD Powershell от Quest, которые можно найти здесь: http://www.quest.com/powershell/activeroles-server.aspx . Установите ЭТО ДО запуска скрипта, иначе он не удастся.
Сам скрипт (очищенный, вам нужно будет настроить некоторые переменные в соответствии с вашими потребностями, такие как имена входных файлов, домен для подключения, сервер dhcp для подключения, настройки электронной почты в конце и т. Д.):
Надеюсь, что это помогает кому-то еще!
источник
Хорошо, я не уверен, что я следую здесь этикету, но выкладываю второй ответ вместо того, чтобы редактировать мой предыдущий, поскольку он действительно содержит некоторую информацию, которая может быть полезна кому-то, даже если окажется, что она не имеет отношения к этому случаю. Если это делает меня идиотом на этом форуме, не стесняйтесь сообщать мне о моих ошибочных путях.
Проблема разделена на несколько частей, вот предложения для тех, которые мне наиболее интересны. Без примеров из журнала это лучшее, что я могу сделать, так что это просто предложения, а не решения.
Для разбора использования журнала
get-content
с-wait
параметром. Для моего случая использования достаточно найти ошибку в журнале ошибок.Вот что сработало для моего собственного варианта использования, простите за форматирование:
Вместо этого
$_ -match "ERROR"
вам нужно как-то отделить поле ID журнала и имя компьютера. Я не уверен, как сделать это наилучшим образом прямо сейчас, но, посколькуwhere-object -match
дает поддержку регулярных выражений, я думаю, что это может быть вариантом. Вы также можете начать с хранения переменной $ _ в другой новой переменной, чтобы иметь возможность подобрать ее для вашего удобства позже в конвейере, внутри вложенных циклов foreach и т. Д.Предполагая, что вы можете получить имя компьютера, я полагаю, что
get-adcomputer
командлет был бы вашим самым простым способом запроса AD (import-module activedirectory
), и я полагаю, при отправке почты по ошибке?Использование в этом
import-csv
случае, конечно, было бы гораздо более элегантным, но я не знаю, как это можно перефразировать (если кто-нибудь прочитает это и узнает хитрость, то, пожалуйста, поделитесь).источник
При условии, что вы уверены в Идентификаторе события и что никакие другие события не регистрируют этот идентификатор в журнале DHCP, кроме тех, которые вас интересуют, push действительно является опцией.
1) Откройте диспетчер серверов, перейдите в журнал DHCP в Event Viewer.
2) Найдите репрезентативную запись, к которой вы хотите приложить свое действие. Выберите его и щелкните правой кнопкой мыши.
3) Выберите «Прикрепить задачу к этому событию».
4) Откроется Мастер создания задач, уберите его оттуда ...
На самом деле существует явная опция электронной почты, но если вам нужно больше логики, чем эта, вы, конечно, можете использовать опцию start-a-program для запуска powershell.exe и присоединить к ней скрипт. Существует множество отличных googleable инструкций о том, как разрешить диспетчеру задач запускать сценарии powershell, если вам нужно руководство.
Прямой альтернативой, которую я вижу, является использование pull путем анализа журнала событий с использованием powershell через запланированные интервалы. «Microsoft Scripting Guy», он же Эд Уилсон, написал несколько потрясающих постов в блоге о том, как анализировать журнал событий, используя командлеты, доступные в различных версиях powershell, поэтому мое предложение было бы использовать в качестве отправной точки для его блога.
Что касается реальных командлетов, у меня сейчас нет времени, чтобы вытащить тайник с полезными фрагментами, но я загляну еще раз через день или два и могу внести свой вклад, если никто не вступил в контакт с некоторыми из них, или у вас нет Не решил все сам :-)
источник
Applications and Services Logs
(пока основано на моих исследованиях / тестировании)Хотя это не относится к желаемому решению, вариант, который может достичь вашей цели, заключается в использовании
arpwatch
( ссылка ), чтобы уведомить вас, когда в сети появляется новый (ранее невидимый) хост.Альтернатива Windows,
arpwatch
кажется, является decaffeinatid, но я никогда не использовал это, поэтому не могу говорить за это хорошо или плохо.источник