Question import event log
- daniel soares
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 133
- Remerciements reçus 0
il y a 18 ans 1 mois #1605
par daniel soares
import event log a été créé par daniel soares
script utile pour les feneants comme moi
toujours sur le theme de l'event log
mais le principe ici etant de l'importer sur mon poste
ou plutot de les importer car les demandes venant a la prod system concernent souvent plusieurs serveurs
la particularité de ce script etant que en fonction de l'argument entré il reconnaitra qu'il doit traiter un seul serveur ou plusieurs ou meme un fichier entier
pour le reste j'ai utilisé le script import-credential de Janel
pour l'import du fichier je n'ai pas pu trouvé d'autre solution que le map du serveur pour un copy du backup
[code:1]
#
# get-event.ps1
#
# 01/02/2008
#
# Usages : ./get-event.ps1 -source serveur1,serveur2 -journal system -compte domaine\compte
# ./get-event.ps1 serveur1,serveur2 Application domaine\compte
# ./get-event.ps1 c:\listeserveurs.xxx security domaine\compte #peu importe l'extention pourvu qu'il y ait un serveur par ligne
#
Param( $source = $(throw \"Entrez les nom de serveurs separés par une virgule ou le chemin du fichier contenant la liste des serveurs\"«»),
$journal = $(throw \"Indiquez un journal (system, application, etc.)\"«»),
$compte = $(throw \"Indiquez un compte (domaine\compte, \compte etc)\"«»))
$import_path = \"c:\servers\\"
#detecte si la source est un nom de serveur ou un fichier
if ($source -match \"\.\w{3}$\"«»){$liste_serveurs = get-content $source}
else {$liste_serveurs = $source}
$liste_serveurs |foreach {
$server =$_
$backup= \"c:\temp\\"+$server+$journal+\".evt\" #defini le nom du fichier backup
# selectionne le journal
$eventlog=gwmi \"Win32_NTEventLogFile WHERE LogFileName='$journal'\" -computername $server -credential (import-credential $compte)
$eventlog.PSBase.Scope.Options.EnablePrivileges = $true
# defini le chemin de map pour transfer du fichier
$loc = \"\\\"+$server+\"\\"+$eventlog.name.substring(0,1)+\"$\"
$file = $loc + $backup.substring(2) #chemin complet du fichier backup
# si un map est necessaire converti le mdp puis map le serveur
$map = New-Object -com Wscript.Network
if (($map.enumNetworkDrives() -like $loc).count -eq 0)
{
$secmdp = import-credential $compte
$ptr = [System.Runtime.InteropServices.Marshal]::«»SecureStringToBSTR($secmdp.password)
$mdp = [System.Runtime.InteropServices.Marshal]::«»PtrToStringUni($ptr)
$map.MapNetworkDrive(\"\", $loc,\"false\",$compte, $mdp)
}
$eventlog.BackupEventlog($backup)
Move-Item $file $import_path -Force
}
[/code:1]
comme j'ai a gerer un parc tres heterogene
la prochaine etape sera de mettre en place un fichier stockant tous les serveurs avec le compte correspondant pour qu'il n'y ai pas le parametre compte a passer en argument.
Message édité par: Dan, à: 1/02/08 18:11
Message édité par: Dan, à: 1/02/08 18:13<br><br>Message édité par: Dan, à: 1/02/08 18:14
toujours sur le theme de l'event log
mais le principe ici etant de l'importer sur mon poste
ou plutot de les importer car les demandes venant a la prod system concernent souvent plusieurs serveurs
la particularité de ce script etant que en fonction de l'argument entré il reconnaitra qu'il doit traiter un seul serveur ou plusieurs ou meme un fichier entier
pour le reste j'ai utilisé le script import-credential de Janel
pour l'import du fichier je n'ai pas pu trouvé d'autre solution que le map du serveur pour un copy du backup
[code:1]
#
# get-event.ps1
#
# 01/02/2008
#
# Usages : ./get-event.ps1 -source serveur1,serveur2 -journal system -compte domaine\compte
# ./get-event.ps1 serveur1,serveur2 Application domaine\compte
# ./get-event.ps1 c:\listeserveurs.xxx security domaine\compte #peu importe l'extention pourvu qu'il y ait un serveur par ligne
#
Param( $source = $(throw \"Entrez les nom de serveurs separés par une virgule ou le chemin du fichier contenant la liste des serveurs\"«»),
$journal = $(throw \"Indiquez un journal (system, application, etc.)\"«»),
$compte = $(throw \"Indiquez un compte (domaine\compte, \compte etc)\"«»))
$import_path = \"c:\servers\\"
#detecte si la source est un nom de serveur ou un fichier
if ($source -match \"\.\w{3}$\"«»){$liste_serveurs = get-content $source}
else {$liste_serveurs = $source}
$liste_serveurs |foreach {
$server =$_
$backup= \"c:\temp\\"+$server+$journal+\".evt\" #defini le nom du fichier backup
# selectionne le journal
$eventlog=gwmi \"Win32_NTEventLogFile WHERE LogFileName='$journal'\" -computername $server -credential (import-credential $compte)
$eventlog.PSBase.Scope.Options.EnablePrivileges = $true
# defini le chemin de map pour transfer du fichier
$loc = \"\\\"+$server+\"\\"+$eventlog.name.substring(0,1)+\"$\"
$file = $loc + $backup.substring(2) #chemin complet du fichier backup
# si un map est necessaire converti le mdp puis map le serveur
$map = New-Object -com Wscript.Network
if (($map.enumNetworkDrives() -like $loc).count -eq 0)
{
$secmdp = import-credential $compte
$ptr = [System.Runtime.InteropServices.Marshal]::«»SecureStringToBSTR($secmdp.password)
$mdp = [System.Runtime.InteropServices.Marshal]::«»PtrToStringUni($ptr)
$map.MapNetworkDrive(\"\", $loc,\"false\",$compte, $mdp)
}
$eventlog.BackupEventlog($backup)
Move-Item $file $import_path -Force
}
[/code:1]
comme j'ai a gerer un parc tres heterogene
la prochaine etape sera de mettre en place un fichier stockant tous les serveurs avec le compte correspondant pour qu'il n'y ai pas le parametre compte a passer en argument.
Message édité par: Dan, à: 1/02/08 18:11
Message édité par: Dan, à: 1/02/08 18:13<br><br>Message édité par: Dan, à: 1/02/08 18:14
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
-
- Hors Ligne
- Modérateur
-
il y a 18 ans 1 mois #1606
par Arnaud Petitjean
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Réponse de Arnaud Petitjean sur le sujet Re:import event log
Salut Dan et merci pour ton script.
Peux tu juste modifier les usages avec la réalité car tu fais remarquer qu'il faut passer un l'argument compte alors que tes exemples d'utilisation n'en font pas mention.
Pourrais tu aussi en profiter pour donner une description un peu plus précise de ce que fait ton script ? Ca me faciliterait la vie pour intégrer ton script dans la bibliothèque
Merci
Arnaud
Peux tu juste modifier les usages avec la réalité car tu fais remarquer qu'il faut passer un l'argument compte alors que tes exemples d'utilisation n'en font pas mention.
Pourrais tu aussi en profiter pour donner une description un peu plus précise de ce que fait ton script ? Ca me faciliterait la vie pour intégrer ton script dans la bibliothèque
Merci
Arnaud
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Connexion ou Créer un compte pour participer à la conversation.
- daniel soares
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 133
- Remerciements reçus 0
il y a 18 ans 1 mois #1609
par daniel soares
Réponse de daniel soares sur le sujet Re:import event log
hello
l'usage est modifié
le script verifie si le premier argument est un fichier si oui il liste les serveurs par get-content
si non il considere l'arguement comme un ou une serie de serveurs
ensuite il backup le journal d'evenement en local sur les serveurs concernés puis l'importe sur le poste d'ou a ete lancé le script
l'usage est modifié
le script verifie si le premier argument est un fichier si oui il liste les serveurs par get-content
si non il considere l'arguement comme un ou une serie de serveurs
ensuite il backup le journal d'evenement en local sur les serveurs concernés puis l'importe sur le poste d'ou a ete lancé le script
Connexion ou Créer un compte pour participer à la conversation.
- Jacques Barathon
- Hors Ligne
- Administrateur
-
Réduire
Plus d'informations
- Messages : 576
- Remerciements reçus 0
il y a 18 ans 1 mois #1635
par Jacques Barathon
Réponse de Jacques Barathon sur le sujet Re:import event log
Hello Dan,
Je n'ai pas encore testé ton script mais il m'a l'air super. A la lecture, j'ai juste deux remarques:
1. Le paramètre source
Tu utilises le même paramètre pour à la fois passer une liste de noms de serveurs ou un nom de fichier contenant la liste. C'est astucieux, mais c'est une source potentielle de confusion. En plus, la logique d'analyse dans le script n'est pas parfaite: elle se base sur le fait que le nom de fichier a forcément une extension composée de 3 caractères. Dans la pratique, ce n'est pas tout le temps vrai, loin s'en faut.
Il vaudrait mieux distinguer deux paramètres, un pour chaque usage, avec une exclusion mutuelle. On pourrait aussi n'accepter qu'une liste de noms, et dans le cas où l'utilisateur veut fournir la liste sous forme de fichier, lui faire faire un get-content et rediriger le contenu par le pipeline. Il faudrait juste traiter cette possibilité en début de script.
2. Le paramètre compte
Je note avec plaisir qu'import-credential a un intérêt.
Par contre, je note aussi que tu as rendu le paramètre compte obligatoire, ce qui me paraît incompatible avec une utilisation interactive du script, situation où très probablement l'utilisateur voudra simplement utiliser ses propres credentials pour accéder aux serveurs distants.
D'ailleurs, si j'ai bien compris, dans la connexion au disque distant tu fais une première tentative sans utiliser le paramètre compte, et si ça échoue tu fais une connexion avec les informations du compte. Or, le script assume par défaut qu'il faut ce compte pour accéder au(x) serveur(s), la première étape apparaît donc inutile.
J'essaierai de proposer une version intégrant mes deux remarques dans la journée.
Janel
Je n'ai pas encore testé ton script mais il m'a l'air super. A la lecture, j'ai juste deux remarques:
1. Le paramètre source
Tu utilises le même paramètre pour à la fois passer une liste de noms de serveurs ou un nom de fichier contenant la liste. C'est astucieux, mais c'est une source potentielle de confusion. En plus, la logique d'analyse dans le script n'est pas parfaite: elle se base sur le fait que le nom de fichier a forcément une extension composée de 3 caractères. Dans la pratique, ce n'est pas tout le temps vrai, loin s'en faut.
Il vaudrait mieux distinguer deux paramètres, un pour chaque usage, avec une exclusion mutuelle. On pourrait aussi n'accepter qu'une liste de noms, et dans le cas où l'utilisateur veut fournir la liste sous forme de fichier, lui faire faire un get-content et rediriger le contenu par le pipeline. Il faudrait juste traiter cette possibilité en début de script.
2. Le paramètre compte
Je note avec plaisir qu'import-credential a un intérêt.
D'ailleurs, si j'ai bien compris, dans la connexion au disque distant tu fais une première tentative sans utiliser le paramètre compte, et si ça échoue tu fais une connexion avec les informations du compte. Or, le script assume par défaut qu'il faut ce compte pour accéder au(x) serveur(s), la première étape apparaît donc inutile.
J'essaierai de proposer une version intégrant mes deux remarques dans la journée.
Janel
Connexion ou Créer un compte pour participer à la conversation.
- Lemaire Patrice
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 40
- Remerciements reçus 0
il y a 18 ans 1 mois #1644
par Lemaire Patrice
Réponse de Lemaire Patrice sur le sujet Re:import event log
Dan écrit:
[code:1]if ( Test-Path -Path $source -PathType Leaf )...[/code:1]
Peut regler se petit différent simplement ...
Suite à la remarque de Janel je pense que :...le script verifie si le premier argument est un fichier si oui il liste les serveurs par get-content
si non il considere l'arguement comme un ou une serie de serveurs...
[code:1]if ( Test-Path -Path $source -PathType Leaf )...[/code:1]
Peut regler se petit différent simplement ...
Connexion ou Créer un compte pour participer à la conversation.
- daniel soares
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 133
- Remerciements reçus 0
il y a 18 ans 1 mois #1647
par daniel soares
Réponse de daniel soares sur le sujet Re:import event log
merci messieurs pour vos remarques tres interessantes
le test-path me semble en effet tres approprié
janel j'attends avec impatience ta version du code
en retour j'ajouterai sur ton post import/export-credential les modifications que j'ai apporté permettant d'utiliser un seul fichier
j'ai plus d'une 10zaine de comptes differents a gerer:(
il y a d'ailleur, dans ma version, un point qui pose pb pour lequel tu ne manquera surement pas d'avoir une solution
<br><br>Message édité par: Dan, à: 7/02/08 19:31
le test-path me semble en effet tres approprié
janel j'attends avec impatience ta version du code
en retour j'ajouterai sur ton post import/export-credential les modifications que j'ai apporté permettant d'utiliser un seul fichier
j'ai plus d'une 10zaine de comptes differents a gerer:(
il y a d'ailleur, dans ma version, un point qui pose pb pour lequel tu ne manquera surement pas d'avoir une solution
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.059 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Contributions à la communauté
- import event log