Question Eventlog

Plus d'informations
il y a 16 ans 2 mois #1449 par balek
Réponse de balek sur le sujet Re:Eventlog
Bon bon, je me fais la reponse.

J'avoue elle est un peu tirée par les cheveux et j'ai pioché dans des scripts trouvés avec mon pote google.

Le but est :
- de sauvegarder tous les 7 jours le fichiers d'evenement security afin d'avoir une retention d'un an des ces fichiers.
Le script va sauvegarder le fichier evt, le zipper, puis le supprimer le fichier exporté. Enfin, il nettoyera le journal d'evenement. Il se lancera dans une tache planifiée une fois par semaine.

[code:1]$day=(Get-Date).day
$month=(Get-Date).month
$year=(Get-Date).year
$sec=gwmi \"Win32_NTEventLogFile WHERE LogFileName='security'\"

function New-Zip
{
param([string]$zipfilename)
set-content $zipfilename (\"PK\" + [char]5 + [char]6 + (\"$([char]0)\" * 18))
(dir $zipfilename).IsReadOnly = $false
}

function Add-Zip
{
param([string]$zipfilename)

if(-not (test-path($zipfilename)))
{
set-content $zipfilename (\"PK\" + [char]5 + [char]6 + (\"$([char]0)\" * 18))
(dir $zipfilename).IsReadOnly = $false
}

$shellApplication = new-object -com shell.application
$zipPackage = $shellApplication.NameSpace($zipfilename)

foreach($file in $input)
{
$zipPackage.CopyHere($file.FullName)
Start-sleep -milliseconds 500
}
}


$sec.PSBase.Scope.Options.EnablePrivileges = $true
$sec.BackupEventlog(\"C:\temp\sec$day$month$year.evt\"«»)

dir C:\temp\sec$day$month$year.evt | Add-zip C:\temp\sec$day$month$year.zip

$syslog = New-Object -TypeName System.Diagnostics.EventLog -argumentlist security
$syslog.clear()

Remove-Item C:\temp\sec$day$month$year.evt

[/code:1]

La partie avec l'incrementation de la date est vraiment limite mais bon ca marche.

@+<br><br>Message édité par: balek, à: 10/01/08 17:02

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

Plus d'informations
il y a 16 ans 2 mois #1450 par Arnaud Petitjean
Réponse de Arnaud Petitjean sur le sujet Re:Eventlog
Bonjour Balek,

$journal[0].

J'ai beaucoup de mal a avoir le reflexe d'utiliser cette ecriture. Je ne suis pas programeur mais j'ai compris plus ou moins l'utilisation.
Appelle t on cela un fonction ? un argument ?


On appelle simplement cela un tableau. Où plus exactement une variable de type tableau. Regarde :

[code:1]PS &gt; $journal.gettype()

IsPublic IsSerial Name BaseType

----
True True Object[] System.Array[/code:1]

Si j'ai bien saisi $journal[0] c'est le journal appli, [1] le security ... etc.


Pas exactement, regarde :

[code:1]PS C:\&gt; $journal = Get-WmiObject Win32_NTEventLogFile
PS C:\&gt; $journal | ft -auto

FileSize LogfileName Name NumberOfRecords

----
65536 Application C:\WINDOWS\system32\config\AppEvent.Evt 149
65536 Directory Service C:\WINDOWS\system32\config\NTDS.Evt 110
65536 DNS Server C:\WINDOWS\system32\config\DnsEvent.Evt 14
65536 File Replication Service C:\WINDOWS\system32\config\NtFrs.Evt 25
65536 Internet Explorer C:\WINDOWS\System32\Config\Internet Explorer.evt 0
6225920 Security C:\WINDOWS\System32\config\SecEvent.Evt 13080
327680 System C:\WINDOWS\system32\config\SysEvent.Evt 844
196608 Windows PowerShell C:\WINDOWS\System32\config\WindowsPowerShell.evt 195
[/code:1]

En l'occurence, le journal Securité se trouve à l'index 5 (on compte à partir de 0). Cela dépend de l'OS de la machine. Certaines fois il y a d'autres journaux, par conséquent l'index peut changer.

Le mieux est de faire comme tu as fait : [code:1]$sec=gwmi \&quot;Win32_NTEventLogFile WHERE LogFileName='security'\&quot;[/code:1]

C'est plus propre et également plus performant car la requête est plus sélective.

Sinon pour ton problème d'accès, c'est à mon avis propre au journal Sécurité. En effet, son accès est un peu particulier justement à cause qu'il contient des informations sensibles.

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 16 ans 2 mois #1451 par Arnaud Petitjean
Réponse de Arnaud Petitjean sur le sujet Re:Eventlog
Ton script est excellent, surtout la fonction de compression :). Je sens que je vais la mettre dans la bibliothèque, comme ça certains éviterons de chercher...

Juste quelques petites remarques :
  • Génération du nom de fichier: pour améliorer la lisibilité de ton code, il serait mieux de créer une variable $nomdefichier plutôt que de réutiliser la forme $day$month$year
  • Dir : préférer plutôt Get-Childitem ou gci, car Dir est une commande héritée de CMD
  • Tu pourrais améliorer ton script en lui donnant la possibilité de recevoir un paramètre (Voir post sur PARAM). Ce paramètre serait le nom et le chemin du fichier de l'archive.

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 16 ans 2 mois #1453 par Arnaud Petitjean
Réponse de Arnaud Petitjean sur le sujet Re:Eventlog

Si tu as aussi des liens interressant ou des livres à me conseiller( qui plus est en francais, mais faut pas rever), je serais vivement intéressé.


Nous avons sur le site la rubrique Liens, qui recueille tous les liens que nous jugeons intéressants. Mais si tu en trouves d'autres que nous ne connaissons pas nous sommes aussi preneurs !

Pour ce qui est d'un livre, nous ne pouvons que te conseiller le nôtre :laugh:. Regarde ici , dans notre FAQ.

@++

Arnaud<br><br>Message édité par: Arnaud, à: 10/01/08 18:33

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 16 ans 2 mois #1455 par balek
Réponse de balek sur le sujet Re:Eventlog
Ravi que ca plaise, mais bon ce n'est pas moi qui est crée la fonction pour le zip. Je posterai le lien plus tard, il est indisponible ce matin.

Je vais suivre tes conseils et ameilorer ce script.

OK pour tes deux premieres remarques, facile a faire, mais pourrais tu m'aider un peu pour les PARAM voir pour utiliser une \&quot;function\&quot; simple .
Ca me permettrais de les utiliser au mieux.

Bonne journée.<br><br>Message édité par: balek, à: 11/01/08 13:34

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

Plus d'informations
il y a 16 ans 2 mois #1479 par balek
Réponse de balek sur le sujet Re:Eventlog
re,

je voudrais sauvegarder des eventlog a distance et la rapatrier sur un autre serveur.

J'ai l'impression que la commande ne peux pas fonctionner car powershell n'est pas present sur les serveurs pour lesquels je veux les fichiers evt.

Est ce une impression ou faut il vraiment que powersehll soit installé sur le serveur cible.

Tous cela dans la commande :

[code:1]$day=(Get-Date).day
$month=(Get-Date).month
$year=(Get-Date).year
$srv=\&quot;srv004\&quot;
$nameoffile=\&quot;security $srv $day $month $year\&quot;
$path=\&quot;c:\temp\\&quot;
$evtfolder=\&quot;\\srv005\d$\save-events\\&quot;


#definition variable du journal security
$sec=gwmi \&quot;Win32_NTEventLogFile WHERE LogFileName='security'\&quot; -computername $srv
$sec.PSBase.Scope.Options.EnablePrivileges = $true
$sec.BackupEventlog(\&quot;$evtfolder$nameoffile.evt\&quot;«»)[/code:1]

Je lance le script depuis srv005 (ou il y a powershell) et je veux recuperer l'evt security du srv004 ou il n'y a pas powershell.

J'ai tenté dans l'autre sens et ca fonctionne bien.

Y a t il une solution ?

Merci par avance.

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

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