Meilleur auteur de réponses
probleme avec la fonction new-timespan dans un script gestion des audit de fichiers

Question
-
Bonjour,
Je m'excuse par avance pour mes lacunes en scripting.
J'ai besoin de rendre plus lisible les journaux d’événement suite a la mise en place de l'audit de fichiers sur windows serveur 2019.
J'utilise le script suivant : https://gallery.technet.microsoft.com/scriptcenter/How-to-audit-changed-39afba72
Ca fonctionne bien sauf que ca n'exporte pas en csv/html.
J'ai regardé avec powershell ISE pour voir l'erreur et le retour que j'ai est :
New-TimeSpan : Impossible de lier le paramètre « Start » à la cible. Exception lors de la définition de « Start » : « Impossible de convertir la valeur Null en type « System.DateTime ». » Au caractère C:\Event_Logs\Functions.ps1:51 : 44 + $TimeSpan = -((New-TimeSpan -Start $Time -End $Pending_Delete ... + ~~~~~ + CategoryInfo : WriteError: (:) [New-TimeSpan], ParentContainsErrorRecordException + FullyQualifiedErrorId : ParameterBindingFailed,Microsoft.PowerShell.Commands.NewTimeSpanCommand
N'étant vraiment pas bon en development, pourriez vous m'indiquer comment remédier a ce problème?
Merci par avance.
Sébastien.
- Modifié sebastien_P jeudi 10 septembre 2020 07:23 traduction
- Modifié Nedeltcho PopovMicrosoft contingent staff jeudi 10 septembre 2020 10:49 pas besoin de traduction anglaise
- Déplacé Nedeltcho PopovMicrosoft contingent staff jeudi 10 septembre 2020 10:49 Forum plus approprié
Réponses
-
C'est bon tout fonctionne, il ne s'agissait que d'une erreur de ma part concernant l'emplacement des fichiers.
Mea Culpa
sebastien
- Marqué comme réponse sebastien_P jeudi 10 septembre 2020 10:55
Toutes les réponses
-
C'est bon tout fonctionne, il ne s'agissait que d'une erreur de ma part concernant l'emplacement des fichiers.
Mea Culpa
sebastien
- Marqué comme réponse sebastien_P jeudi 10 septembre 2020 10:55
-
bonjour Sebastien_P
Je devrais te dire "pose ta question directement au développeur dudit script sur PS Gallery", mais bon, j'ai récup les dits sripts (les 3 fichiers .ps1)
Monitor-File-server-activity.ps1
Ligne 17 : Clear-Eventlog "Security". WTF ! C'est quoi ce script qui se permet de vider le journal sécurité et qui plus est sans me le dire ?
passons, il fait sa query dans le journal de sécurité puis utilise ces propres fonctions (pas de pb) pour faire toussa toussa
Le pb (merci pour la capture) vient de la ligne 51 de fonctions.ps1, donc de la fonction Cleanup.
d'ailleurs dans le script principal il écrit en commentaire : # Flush out the list of deleted items (improbable in production at 11:45pm, but was an issue when testing the script)
Son truc n'est pas opérationnel tel quel. Je le testerais pas, même dans mon lab, car je ne veux pas purger mon journal de sécurité.
Quand tu écris : "Ca fonctionne bien sauf que ca n'exporte pas en csv/html." ==> Donc ça ne fonctionne pas :-)
Je te propose de faire juste ceci, dans un premier temps. Lis, c'est commenté, et aucun risque.
# Nombre de jours à scruter dans l'event log $Periode = 1 $EndTime = Get-Date # Maintenant $StartTime = (Get-Date).AddDays(-$Periode) # maintenant -$Periode # La hashtable à appliquer. $MyFilter = @{LogName="security" ID=4656,4659,4660,4663 # les IDs que tu cherches StartTime = $StartTime # le passé EndTime = $EndTime # maintenant } $MesEvents = Get-WinEvent -FilterHashTable $MyFilter <# Get-WinEvent -FilterHashTable $MyFilter
Maintenant regarde le contenu de $MesEvents. Juste en tapant $Mesevents dans la console.
C'est ce que tu cherches exactement ? ... sinon on affine.
Bon maintenant que tu as ta collection d'objets (oui c'est une collection d'objets), va falloir penser à sortir tout ça dans un .csv, html ...
# Nom des fichiers d'export # $PSCriptRoot est le path ou est lancé le script. Donc peut importe ou est le script, le rapport cela dans le même dossier $CSVExportFile = "$PSScriptRoot\Sec-Event-du-$(Get-Date -f "dd-MM-yyyy").csv" $HTMLExportFile = "$PSScriptRoot\Sec-Event-du-$(Get-Date -f "dd-MM-yyyy").html" # Export en .csv $MesEvents | Export-Csv -Path $CSVExportFile -Encoding UTF8 -NoTypeInformation -Delimiter ";" # Export en .html $MesEvents | ConvertTo-Html ... | Out-File -FilePath $HTMLExportFile
Jusque là, tu suis ? Pas trop difficile tu vois... sans les commentaires on doit arriver péniblement à 10 lignes.
OK je reconnais, pour la sortie Html j'ai pas finalisé, il n'y a pas de feuille de style (les couleurs et tout et tout).
Alors regarde ici (qui a dit que je faisais ma pub ? Non j'explique au gentil Monsieur)
Ce qu'il faut que tu retiennes :
- Ne jamais exécuter un script sans comprendre ce qu'il fait (désolé, mais le clear du journal de sécurité me reste en travers) mais ça peut inspirer sur comment s'y prendre
- Voir d'autres exemples. Le lien que je t'ai mis te donne quelques exemples (c'est plus un mémo pour moi que pour le reste de la terre, mais il est sur un espace public alors autant que cela serve). Prends et adaptes.
- Fais par toi-même suivant cette démarche
- mise au point de la (les) cmdlets à passer pour obtenir ce que tu cherches. Juste sur une machine
- Intégration du point 1 dans une boucle foreach pour un traitement de masse (pas ton cas)
- Ajout de la gestion des erreurs : là, ça peut devenir plus hardu. Une piste : Try ... Catch
- Ajout du logging de ton script (conseil : module PS EZLog, le plus simple et le plus efficace que j'ai pu tester. Sortie en console et en fichier avec une seule et unique cmdlet. Elégant et efficace pour les feignants comme moi)
- Tester (pas oublier -WhatIf si ce que tu fais modifie quoi que ce soit). On teste, on ne casse pas :-)
Tu vas pouvoir faire par toi-même, tout seul comme un grand. C'est quand même plus valorisant. Bien entendu, ce qui est décrit sur le Script Center concernant concernant l'activation de l'audit de tel ou tel type d'évent, dans le principe reste valable (pour peu que cela soit exactement ce que tu veux logguer). Attention à la taille de ton journal, il doit être bien dimensionné.
Voilà, tu as des billes maintenant pour faire.
Cordialement
Olivier
- Ne jamais exécuter un script sans comprendre ce qu'il fait (désolé, mais le clear du journal de sécurité me reste en travers) mais ça peut inspirer sur comment s'y prendre