GUIÓN
Para simplificar esto a su ejemplo más fácil:
Tengo un DC estándar de Windows 2008 R2 con la función de servidor DHCP. Distribuye direcciones IP a través de varios ámbitos IPv4, no hay problema allí.
Como me gustaria
Me gustaría una forma de crear una notificación / entrada de registro de eventos / similar cada vez que un dispositivo obtiene una concesión de dirección DHCP y ese dispositivo NO ES una computadora unida al dominio en Active Directory. No me importa si es Powershell personalizado, etc.
En pocas palabras = Me gustaría saber cuándo los dispositivos que no son de dominio están en la red sin utilizar 802.1X en este momento. Sé que esto no tendrá en cuenta los dispositivos IP estáticos. Tengo un software de monitoreo que escaneará la red y encontrará dispositivos, pero no es tan detallado en detalle.
INVESTIGACIÓN REALIZADA / OPCIONES CONSIDERADAS
No veo ninguna posibilidad con el registro incorporado.
Sí, conozco 802.1X y tengo la capacidad de implementarlo a largo plazo en esta ubicación, pero estamos a cierta distancia de un proyecto como ese, y si bien eso resolvería problemas de autenticación de red, esto todavía me ayuda fuera de objetivos 802.1X.
He buscado algunas secuencias de comandos, etc. que pueden resultar útiles, pero las cosas que encuentro me llevan a creer que mi google-fu me está fallando en este momento.
Creo que la lógica a continuación es sólida ( suponiendo que no exista alguna solución existente ):
- El dispositivo recibe la dirección DHCP
- Se registra la entrada del registro de eventos (el ID de evento 10 en el registro de auditoría de DHCP debería funcionar (ya que un nuevo contrato de arrendamiento es lo que más me interesaría, no las renovaciones): http://technet.microsoft.com/en-us/library /dd759178.aspx )
- En este punto, una secuencia de comandos de algún tipo probablemente tendría que hacerse cargo de los "PASOS" restantes a continuación.
- De alguna manera, consulte este registro DHCP para estos ID de evento 10 (me encantaría presionar, pero supongo que el único recurso aquí es tirar)
- Analice la consulta del nombre del dispositivo al que se le asignó el nuevo contrato de arrendamiento
- Consulta AD para el nombre del dispositivo
- SI no se encuentra en AD, envíe un correo electrónico de notificación
Si alguien tiene alguna idea sobre cómo hacer esto correctamente, realmente lo agradecería. No estoy buscando un "dame el codez", pero me encantaría saber si hay alternativas a la lista anterior o si no estoy pensando claramente y existe otro método para recopilar esta información. Si tiene fragmentos de código / comandos PS que le gustaría compartir para ayudar a lograr esto, mucho mejor.
fuente
Respuestas:
Con muchas gracias a ErikE y los demás aquí, he seguido un camino ... No diré que es el camino correcto, pero el script Powershell que se me ocurrió hace el truco.
El código está debajo si alguien lo quiere. Simplemente ejecútelo manualmente apuntando a cada servidor DHCP o prográmelo (nuevamente apuntando a cada servidor DHCP en el script).
Lo que hace el guión:
Lo que necesitarás:
El script usa el módulo AD (
import-module activedirectory
), por lo que se ejecuta mejor en un AD DC que ejecuta DHCP. Si este no es su caso, puede instalar el módulo AD PowerShell: http://blogs.msdn.com/b/rkramesh/archive/2012/01/17/how-to-add-active-directory- módulo-en-powershell-en-windows-7.aspxTambién necesitará los cmdlets AD Powershell de Quest que se encuentran aquí: http://www.quest.com/powershell/activeroles-server.aspx . Instale ESTOS ANTES de ejecutar el script o fallará.
El script en sí (desinfectado, deberá configurar algunas de las variables para satisfacer sus necesidades, como los nombres de los archivos de entrada, el dominio para conectarse, el servidor dhcp para conectarse, la configuración del correo electrónico cerca del final, etc.):
Espero que ayude a alguien más!
fuente
OK, no estoy seguro de seguir la etiqueta aquí, pero estoy publicando una segunda respuesta en lugar de editar la anterior, ya que contenía información que puede ser útil para alguien, incluso si se demuestra que es irrelevante para este caso. Si eso me convierte en un idiota en este foro, siéntase libre de informarme de mis maneras erróneas.
El problema se divide en varias partes, aquí hay sugerencias para las que encuentro más interesantes. Sin ejemplos del registro, esto es lo mejor que puedo hacer, por lo que son solo sugerencias, no soluciones.
Para analizar el registro, use
get-content
el-wait
parámetro. Para mi caso de uso, es suficiente encontrar un error en un registro de errores.Esto es lo que funcionó para mi propio caso de uso, perdone el formato:
En lugar de
$_ -match "ERROR"
, necesitaría separar el campo ID de registro y el nombre de la computadora de alguna manera. No estoy seguro de cómo hacerlo de la mejor manera en este momento, pero dado quewhere-object -match
brinda soporte para expresiones regulares, supongo que podría ser una opción. También puede comenzar almacenando la variable $ _ en otra variable nueva, para poder recogerla a su conveniencia más adelante en la tubería, dentro de bucles foreach anidados, etc.Suponiendo que pueda obtener el nombre de la computadora, supongo que el
get-adcomputer
cmdlet sería su forma más simple de consultar su AD (import-module activedirectory
), y supongo que, por error, envíe un correo.import-csv
Por supuesto, usar el sería mucho más elegante en su caso, pero no conozco ninguna forma de seguirlo (si alguien lee esto y conoce un truco en ese callejón, por favor, comparta).fuente
Bajo el supuesto de que está seguro de la ID del evento, y de que ningún otro evento se registra en esta ID en el registro de DHCP, pero sí en los que le interesa, la inserción es una opción.
1) Abra el Administrador del servidor, vaya al registro de DHCP en el Visor de eventos.
2) Encuentre una entrada representativa a la que desee adjuntar su acción. Selecciónelo y haga clic derecho.
3) Elija "Adjuntar tarea a este evento".
4) Se abre el Asistente de creación de tareas, quítelo de allí ...
En realidad, hay una opción de correo electrónico explícito, pero si necesita más lógica que eso, por supuesto, puede usar la opción de iniciar un programa para iniciar powershell.exe y adjuntarle un script. Hay muchos excelentes ejemplos de googleable sobre cómo dejar que el Administrador de tareas ejecute scripts de PowerShell si necesita orientación.
La alternativa inmediata que veo es usar pull analizando el registro de eventos usando powershell a intervalos programados. "The Microsoft Scripting Guy", también conocido como Ed Wilson, ha escrito algunas publicaciones de blog increíbles sobre cómo analizar el Registro de eventos utilizando los cmdlets disponibles en las diferentes versiones de powershell, por lo que sería su sugerencia tomar su blog como punto de partida.
En cuanto a los cmdlets reales, no tengo tiempo en este momento para sacar mi alijo de fragmentos útiles, pero buscaré nuevamente en uno o dos días y puede contribuir si nadie más ha colaborado con algunos bien elegidos, o si no No lo resolvió todo usted solo :-)
fuente
Applications and Services Logs
(hasta ahora basado en mi investigación / prueba)Si bien esto no aborda su solución deseada, una opción que puede lograr su objetivo es utilizar
arpwatch
( enlace ) para notificarle cuando se ve un nuevo host (previamente no visto) en la red.Una alternativa a Windows
arpwatch
parece ser descafeinante, pero nunca la he usado, así que no puedo hablar de eso bueno o malo.fuente