SCÉNARIO
Pour simplifier cela, c'est l'exemple le plus simple:
J'ai un contrôleur de domaine standard Windows 2008 R2 avec le rôle de serveur DHCP. Il distribue des IP via différentes étendues IPv4, aucun problème là-bas.
CE QUE J'AIMERAIS
Je voudrais un moyen de créer une notification / entrée de journal des événements / similaire chaque fois qu'un appareil obtient un bail d'adresse DHCP et que cet appareil N'EST PAS un ordinateur joint à un domaine dans Active Directory. Peu importe que ce soit un Powershell personnalisé, etc.
Bottom line = Je voudrais un moyen de savoir quand des périphériques hors domaine sont sur le réseau sans utiliser 802.1X pour le moment. Je sais que cela ne tiendra pas compte des appareils IP statiques. J'ai un logiciel de surveillance qui analysera le réseau et trouvera des périphériques, mais ce n'est pas aussi détaillé.
RECHERCHE FAITE / OPTIONS CONSIDÉRÉES
Je ne vois pas de telles possibilités avec la journalisation intégrée.
Oui, je connais le 802.1X et j'ai la possibilité de l'implémenter à long terme à cet endroit, mais nous sommes loin d'un projet comme celui-ci, et même si cela résoudrait les problèmes d'authentification réseau, cela m'a toujours été utile à l'extérieur des objectifs 802.1X.
J'ai cherché quelques bits de script, etc. qui pourraient s'avérer utiles, mais les choses que je trouve me font croire que mon google-fu me fait défaut en ce moment.
Je crois que la logique ci-dessous est bonne (en supposant qu'il n'y a pas de solution existante ):
- L'appareil reçoit une adresse DHCP
- L'entrée du journal des événements est enregistrée (l'ID d'événement 10 dans le journal d'audit DHCP devrait fonctionner (car un nouveau bail est ce qui m'intéresserait le plus, pas les renouvellements): http://technet.microsoft.com/en-us/library /dd759178.aspx )
- À ce stade, un script quelconque devrait probablement prendre le relais des "STEPS" restants ci-dessous.
- En quelque sorte, interrogez ce journal DHCP pour ces ID d'événement 10 (j'adorerais pousser, mais je suppose que tirer est le seul recours ici)
- Analyser la requête pour le nom de l'appareil auquel le nouveau bail est attribué
- Recherchez AD pour le nom de l'appareil
- SI pas trouvé dans la MA, envoyer un e - mail de notification
Si quelqu'un a des idées sur la façon de procéder correctement, je l'apprécierais vraiment. Je ne cherche pas un "donnez-moi le code" mais j'aimerais savoir s'il existe des alternatives à la liste ci-dessus ou si je ne pense pas clairement et qu'une autre méthode existe pour collecter ces informations. Si vous avez des extraits de code / commandes PS que vous souhaitez partager pour y parvenir, c'est encore mieux.
la source
Réponses:
Avec beaucoup de remerciements à ErikE et aux autres ici, j'ai emprunté un chemin ... Je ne dirai pas que c'est le bon chemin, mais le script Powershell que j'ai trouvé fait l'affaire.
Le code est ci-dessous si quelqu'un le veut. Il suffit de l'exécuter manuellement en pointant sur chaque serveur DHCP ou de le planifier (en pointant de nouveau chaque serveur DHCP dans le script).
Ce que fait le script:
Ce dont vous aurez besoin:
Le script utilise le module AD (
import-module activedirectory
), il est donc préférable de l'exécuter sur un AD DC exécutant DHCP. Si ce n'est pas le cas pour vous, vous pouvez installer le module PowerShell AD: http://blogs.msdn.com/b/rkramesh/archive/2012/01/17/how-to-add-active-directory- module-dans-powershell-dans-windows-7.aspxVous aurez également besoin des applets de commande AD Powershell de Quest qui se trouvent ici: http://www.quest.com/powershell/activeroles-server.aspx . Installez-les AVANT d' exécuter le script ou il échouera.
Le script lui-même (aseptisé, vous devrez configurer certaines des variables pour répondre à vos besoins, comme les noms des fichiers d'entrée, le domaine auquel se connecter, le serveur DHCP pour se connecter, les paramètres de messagerie vers la fin, etc.):
J'espère que cela aide quelqu'un d'autre!
la source
OK, je ne suis pas sûr de suivre l'étiquette ici, mais je poste une deuxième réponse au lieu de modifier la précédente, car elle contenait des informations qui pourraient être utiles à quelqu'un même si cela ne se révélait pas pertinent dans ce cas. Si cela fait de moi un idiot dans ce forum, n'hésitez pas à m'informer de mes erreurs.
Le problème est divisé en plusieurs parties, voici des suggestions pour celles que je trouve les plus intéressantes. Sans exemples du journal, c'est le mieux que je puisse faire, il ne s'agit donc que de suggestions et non de solutions.
Pour analyser le journal, utilisez
get-content
le-wait
paramètre. Pour mon cas d'utilisation, il suffit de trouver une erreur dans un journal d'erreurs.C'est ce qui a fonctionné pour mon propre cas d'utilisation, pardonnez le formatage:
Au lieu de,
$_ -match "ERROR"
vous devrez séparer le champ ID du journal et le nom de l'ordinateur d'une manière ou d'une autre. Je ne suis pas sûr de savoir comment procéder de la meilleure façon actuellement, mais comme ilwhere-object -match
offre un support regex, je suppose que cela pourrait être une option. Vous pouvez également commencer par stocker la variable $ _ dans une autre nouvelle variable, pour pouvoir la récupérer à votre convenance plus tard dans le pipeline, à l'intérieur de boucles foreach imbriquées, etc.En supposant que vous pouvez obtenir le nom de l'ordinateur, je suppose que l'
get-adcomputer
applet de commande serait votre moyen le plus simple d'interroger votre AD (import-module activedirectory
), et je suppose qu'en cas d'erreur, envoyer un courrier?Utiliser le
import-csv
serait bien sûr beaucoup plus élégant dans votre cas, mais je ne connais aucun moyen de le suivre (si quelqu'un arrive à lire ceci et connaît une astuce dans cette ruelle alors s'il vous plaît, partagez s'il vous plaît).la source
En supposant que vous êtes certain de l'ID d'événement et qu'aucun autre événement ne se connecte à cet ID dans le journal DHCP, sauf ceux qui vous intéressent, push est en effet une option.
1) Ouvrez le Gestionnaire de serveur, accédez au journal DHCP dans l'Observateur d'événements.
2) Trouvez une entrée représentative à laquelle vous souhaitez joindre votre action. Sélectionnez-le et faites un clic droit.
3) Choisissez "Attacher une tâche à cet événement".
4) L'assistant de création de tâche s'ouvre, retirez-le de là ...
Il existe en fait une option de messagerie explicite, mais si vous avez besoin de plus de logique que cela, vous êtes bien sûr libre d'utiliser l'option start-a-program pour lancer powershell.exe et y attacher un script. Il y a beaucoup d'excellents howtos googleable sur la façon de laisser le Gestionnaire des tâches exécuter des scripts PowerShell si vous avez besoin de conseils.
L'alternative immédiate que je vois consiste à utiliser pull en analysant le journal des événements à l'aide de PowerShell à intervalles planifiés. "The Microsoft Scripting Guy", alias Ed Wilson, a écrit des articles de blog impressionnants sur la façon d'analyser le journal des événements en utilisant les applets de commande disponibles dans les différentes versions de PowerShell, donc prendre son blog comme point de départ serait ma suggestion.
En ce qui concerne les applets de commande réelles, je n'ai pas le temps pour le moment de retirer ma réserve d'extraits de code à portée de main, mais j'y reviendrai dans un jour ou deux et je pourrai contribuer si personne d'autre ne s'est joint à certains bien choisis, ou si vous n'avez pas ´t pas tout résolu par vous-même :-)
la source
Applications and Services Logs
(jusqu'à présent basé sur mes recherches / tests)Bien que cela ne réponde pas à votre solution souhaitée, une option qui peut atteindre votre objectif est d'utiliser
arpwatch
( lien ) pour vous avertir lorsqu'un nouvel hôte (précédemment invisible) est vu sur le réseau.Une alternative à Windows
arpwatch
semble être décaféinatide, mais je ne l'ai jamais utilisée, je ne peux donc pas en parler en bien ou en mal.la source