Question import event log

Plus d'informations
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

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 18 ans 1 mois #1606 par Arnaud Petitjean
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

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.

Plus d'informations
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

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
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

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
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:

...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...

Suite à la remarque de Janel je pense que :
[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.

Plus d'informations
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

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.061 secondes
Propulsé par Kunena