Question Récupérer la "Description de l'ordinateur"

Plus d'informations
il y a 8 ans 2 mois #21383 par Philippe

je crois que le second liens est HS

j'ai corrigé le deuxième lien dans le message et je le recopie ici : Advanced XML filtering in the Windows Event Viewer de NedPyle (MSFT)

Hum je n'ai pas cela de mon coté... La class Win32 référence des événements Système et Application. Mais les deux trois éléments que j'ai trouvé niveau Application font références à des Erreurs 5973.

si je regarde la doc msdn il semble que Win32_NTLogEventUser renvoie tous les evenements associé à l'utilisateur courant \"actif\" !
mais il me semble renvoyer tous le journal application sur mon PC comme semble le pensé l'auteur de ce livre


:) merci pour la comparaison du login qui semble confirmé mes premières constatation ! il va falloir que je me penche sérieusement sur le sujet !

J'ai seulement cherché l'acronyme pour l'instant.

il est possible que je me trompe sur la traduction de l'acronyme, vu que je n'ai presque rien trouve sur le sujet ! :(

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

Plus d'informations
il y a 8 ans 2 mois #21384 par Philippe
Galadan écrit:

Oula!! ça boss ici!! :)

Merci à vous deux!

de rien a deux on avance plus vite et on n'est plus motivé ;) B)

Du coup je suis un peu perdu, on est clairement au dessus de mes connaissances! :)
Un petit résumé? :)

on reste sur une GPO computer, tu coup on n'est parti sur une autre piste qui consiste a lire le journal d'evenement de Windows pour y trouvé les logins utilisateurs. c'est sans doute le seul moyen de récupéré les logins en gpo computer
dans le script que je vais te donné il prend les 20 derniers, les regroupes par nom et les comptes
attention ça ne fonctionne pas sur Windows 10 et sans doute sur serveur 2012 !
si tu a win10 va falloir faire quelques adaptations

Vous voulez que je test quelque chose? Je peux tester sur mon domaine.

oui le script suivant,
peut tu nous confirmé que ca fonctionne bien en GPO computer :
[code:1]$filterXML = @'
<QueryList>
<Query Id=\"0\" Path=\"Security\">
<Select Path=\"Security\">
(*[System[(EventID = 4624 )]] and *[EventData[Data[@Name='LogonType']='2']])
</Select>
</Query>
</QueryList>
'@

$events = Get-WinEvent -FilterXml $filterXML -MaxEvents 20

$comptes = @()
$events | foreach {
$eventXML = [xml]$_.ToXml()
switch ($eventXML.Event.EventData.Data) {
{$_.name -eq 'TargetUserName'} {$comptes += $_.\"#text\" }
}
}
$comptes | Group-Object | Sort-object Count -Descending | select count, name | Export-Csv C:\test.csv -NoTypeInformation
[/code:1]
sur la derniere ligne tu peut change la destination de l'export comme on la fait avant pour centralisé les csv

le fichier CSV doit contenir quelque chose comme ceci :
[code:1]\"Count\",\"Name\"
\"6\",\"albert\"
\"4\",\"hubert\"
\"4\",\"damien\"
\"2\",\"julien\"
\"2\",\"nicolas\"
\"2\",\"galadan\"[/code:1]

si tu confirme il ne restera que les 2 dernières étapes B)

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

Plus d'informations
il y a 8 ans 2 mois #21385 par NicolasBdn

j'ai corrigé le deuxième lien dans le message et je le recopie ici


Nickel, merci je vais y jeter un œil.

de rien a deux on avance plus vite et on n'est plus motivé


C'est clair!

Je vais séparer ma réponse en deux pour que se soit plus limpide :)

Partie NTLogEventUser:

si je regarde la doc msdn il semble que Win32_NTLogEventUser renvoie tous les evenements associé à l'utilisateur courant \"actif\" !

mais il me semble renvoyer tous le journal application sur mon PC comme semble le pensé l'auteur de ce livre


D'après le lien MSDN que tu as donnée, il couple deux base WMI, Win32_NTLogEvent et Win32_UserAccount.

J'ai pu remarqué que les sorties de NTLogEventUser sont d'abord des fichiers de log Application et ensuite Système. D'après la class Win32_NTLogEvent il sort également les entrées en fonction du fichier de log. D'abord Application, ensuite Security, etc.

Les sorties de la class Win32_NTLogEventUser se font d'abord par fichier de Log, ensuite par RecordID.
Il est donc normal qu'avec un filtrage sur les 20 premières entrée nous aillons que de l'application.

Concernant le livre, il semble effectivement très intéressant. Mais il a été rédigé sur la base de Windows 2000. Le lien MSDN lui est rédigé pour 2003 minimum. Il est possible qu'entre les deux systèmes, Microsoft a modifié sa façon de procédé, ou l'auteur c'est trompé ^^'.

merci pour la comparaison du login qui semble confirmé mes premières constatation ! il va falloir que je me penche sérieusement sur le sujet !


De rien, je serais ravis de t'aider.
_________

Concernant la demande initiale:

si tu confirme il ne restera que les 2 dernières étapes


J'ai bricolé ça rapidement:

[code:1]$CSV = Import-CSV -Path C:\test.csv

$CountCSV = $CSV | Group-Object Count | Select-Object -First 1
$CountCSV.Group.Name
If ($CountCSV.Count -eq 1){
Write-host \"Notre grand gagnant est $($CountCSV.Group.Name)\"
}Else{
Write-host \"Apparemment il n'est pas tout seul...\"
}[/code:1]

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

Plus d'informations
il y a 8 ans 2 mois #21387 par Philippe

De rien, je serais ravis de t'aider.

j'ai justement besoin d'aide pour refaire la toiture et après il faut que je range la cave à vin :woohoo:
je plaisante :laugh: je suis en appart donc j'ai pas m'occupé du toit mais pour la cave pourquoi pas !!! :evil:

Concernant la demande initiale:

si tu confirme il ne restera que les 2 dernières étapes


J'ai bricolé ça rapidement:

en reprennent la demande on n'a :
- si il y a une description on l'utilise
- sinon on prend le nom du plus connecté
- en cas d'égalité prendre le plus récent !

on et plus dans ceci :
[code:1]
$filterXML = @'
<QueryList>
<Query Id=\"0\" Path=\"Security\">
<Select Path=\"Security\">
(*[System[(EventID = 4624 )]] and *[EventData[Data[@Name='LogonType']='2']])
</Select>
</Query>
</QueryList>
'@

#Récupération du nom du PC
$computer = (Get-WmiObject -Class win32_computersystem).name
#Récupération de la description de l'ordinateur
$description = (Get-WmiObject -class win32_operatingsystem |select Description).description
if ($description -ne \"\"«») {
# on prend la description du pc
$descrip = $description
}
else {
# on prend l'utilisateur le plus fréquemment connecté
$events = Get-WinEvent -FilterXml $filterXML -MaxEvents 20

$comptes = @()
$events | foreach {
$eventXML = [xml]$_.ToXml()
switch ($eventXML.Event.EventData.Data) {
{$_.name -eq 'TargetUserName'} {$comptes += $_.\"#text\" }
}
}
$descrip = ($comptes | Group-Object | Sort-object Count -Descending | select count, name)[0]
}
# Ecriture de la description dans un fichier au nom de l'ordinateur
\" \" | select @{n=\"computer\";e={$computer}}, @{n=\"description\";e={$descrip}} | export-Csv C:\partage_description\$computer.csv

[/code:1]
il n'y a que le cas de l'égalité de deux utilisateurs ou plus qui reste a géré !! :cheer:

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

Plus d'informations
il y a 8 ans 2 mois #21388 par Philippe
Pour NTLogEventUser comme tu dis ce sont de vieux article et livre mais aussi de une vielle class wmi.
je pense que maintenant on l'utilise plus vraiment et je l'espère pour Windows 10 !

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

Plus d'informations
il y a 8 ans 2 mois #21389 par Galadan
Quand je test en local, j'ai des erreurs:

[code:1]Get-WinEvent : Impossible de récupérer des informations sur le journal Security. Erreur : Tentative d'exécution d'une opération non autorisée..
Au caractère C:\Users\galadan\Desktop\testlogon.ps1:21 : 15
+ $events = Get-WinEvent -FilterXml $filterXML -MaxEvents 20
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:«») [Get-WinEvent], Exception
+ FullyQualifiedErrorId : LogInfoUnavailable,Microsoft.PowerShell.Commands.GetWinEventCommand

Get-WinEvent : Tentative d'exécution d'une opération non autorisée.
Au caractère C:\Users\galadan\Desktop\testlogon.ps1:21 : 15
+ $events = Get-WinEvent -FilterXml $filterXML -MaxEvents 20
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:«») [Get-WinEvent], UnauthorizedAccessException
+ FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.GetWinEventCommand

Impossible d’appeler une méthode dans une expression Null.
Au caractère C:\Users\galadan\Desktop\testlogon.ps1:25 : 9
+ $eventXML = [xml]$_.ToXml()
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation : (:«») [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull

Indexation impossible dans un tableau Null.
Au caractère C:\Users\galadan\Desktop\testlogon.ps1:30 : 5
+ $descrip = ($comptes | Group-Object | Sort-object Count -Descendi ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation : (:«») [], RuntimeException
+ FullyQualifiedErrorId : NullArray[/code:1]

Edit: Autant pour moi je test sur mon PC w10 ;)

Message édité par: Galadan, à: 25/01/16 15:38


Vous pouvez m'expliquez la partie du else que je comprenne :) ?<br><br>Message édité par: Galadan, à: 25/01/16 16:19

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

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