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

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

Edit: Autant pour moi je test sur mon PC w10

tu confirme que l'on doit l'adapté à w10

Vous pouvez m'expliquez la partie du else que je comprenne ?

c'est simple, apres le else c'est la partie ou le PC n'a pas de description.
le Get-WinEvent lis les évènements 5624 du journal sécurité de Windows, à chaque fois qu'un utilisateur s'identifie à sur un ordinateur un event 5624 s'ajoute au journal avec logontype a 2 ( voir cette article ) pour la description du logontype.
le filtre $filterXML utilisé par Get-WinEvent filtre donc tous le ID 5624 avec logontype a 2 !
l'option maxevents indique le nombre d'évènement retourné

la boucle qui suit converti chaque évènement au format XML ([xml]$_.ToXml()), puis en extrait l'utilisateur dans 'TargetUserName' (dans le switch). Il en résulte un tableau avec les noms des derniers utilisateurs qui ce sont connecté.
la derniere ligne regroupe les comptes utilisateurs et les comptes, puis les tries par ordre décroisant du nombre d'apparition.
enfin les crochets prend le premier élément de la liste et ne garde que le nom !

et la je vois une erreur pour ne gardé que le nom :blush:
désolé mais tu doit modifier cette ligne :
[code:1]$descrip = ($comptes | Group-Object | Sort-object Count -Descending)[0].name[/code:1]

il reste donc deux choses à faire :
- le cas de l'égalité de deux utilisateurs ou plus qui reste a géré !! actuellement je prend le premier de la liste.
- géré le fonctionnement nouveuw de Windows 10 et plus

Nicolas si tu a des idées elle sont bienvenue !! B)
.<br><br>Message édité par: 6ratgus, à: 25/01/16 18:17

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

Plus d'informations
il y a 8 ans 2 mois #21392 par Galadan
ok super, je comprend le principe ^^ après faut mémoriser les commande et surtout la syntaxe :)

Pour le cas d'égalité, perso ça me va le premier de la liste.
Et je confirme que pour Win10 ça met les erreurs de mon post précédent.

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

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

Nicolas si tu a des idées elle sont bienvenue !!

Pour le cas d'égalité, perso ça me va le premier de la liste.


Si tu parts dans cette idée, ça me convient, car faire un tri me paraît bien plus complexe.

En effet, il ne faudrait pas mettre de côté l'extraction de l'objet xml, mais l'intégrer dans un objet pour l'exploiter de nouveau.

Dans l'event, nous avons la partie EventData où nous récupérons le nom de l'utilisateur. Nous avons également la partie System où la partie TimeCreated est référencer.

Concernant Windows 10, la tâche va être compliqué car comme nous l'avons dit plus haut les entrées sont en doubles.

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

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

ok super, je comprend le principe ^^ après faut mémoriser les commande et surtout la syntaxe

je vais changer de boulot, je vais faire formateur B)
pour la syntaxe, j'ai parfois des problèmes avec certaine, je vais sur Google pour retrouvé soit la doc soit des exemples

Pour le cas d'égalité, perso ça me va le premier de la liste.

ok

nicolas

ça me convient, car faire un tri me paraît bien plus complexe.

Dans l'event, nous avons la partie EventData où nous récupérons le nom de l'utilisateur. Nous avons également la partie System où la partie TimeCreated est référencer.

exactement on rajoute au tableau des comptes la date (TimeCreated) de l'event, puis on trie sur les noms et si égalité on trie sur la date pour les noms en égalité
simple ;) pour le plaisir ou si tu veux t'entrainé on peut le faire !

Concernant Windows 10, la tâche va être compliqué car comme nous l'avons dit plus haut les entrées sont en doubles.

oui cette évolution indispensable sera plus complexe !
- il faut d'abord repéré la version de l'os ! WMI ?
- changé le filtre pour gardé que les logontype à 11
- enlevé les doubles avec l'option unique de select ou de sort par exemple
- j'oublie quoi ? un poste win10 pour les tests ?<br><br>Message édité par: 6ratgus, à: 26/01/16 11:13

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

Plus d'informations
il y a 8 ans 2 mois #21395 par Galadan
Pour win10, je vais en voir besoin car j'ai des postes sur le domain avec cette OS.

Pour le PC test je peux faire sur mon poste au besoin.

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

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

je vais changer de boulot, je vais faire formateur


Rigole pas, on m'a déjà fait ce genre de proposition dans mon centre de formation... Voyant que je me baladais pendant la semaine PowerShell...
Je trouvais plus intéressant de travailler sur les Workflow et les runspaces xD.

exactement on rajoute au tableau des comptes la date (TimeCreated) de l'event, puis on trie sur les noms et si égalité on trie sur la date pour les noms en égalité

simple pour le plaisir ou si tu veux t'entrainé on peut le faire !


Hum, effectivement, ça pourrait être très instructif :)

oui cette évolution indispensable sera plus complexe !

- il faut d'abord repéré la version de l'os ! WMI ?

- changé le filtre pour gardé que les logontype à 11

- enlevé les doubles avec l'option unique de select ou de sort par exemple

- j'oublie quoi ? un poste win10 pour les tests ?


1- Win32_operatingsystem, propriété Version
2- Trouvé
3- Hum, est-ce vraiment nécessaire finalement? Les résultats sont juste doublé, mais on est en droit de conclure qu'un nombre de connexion égale entre deux Users seront aussi doublé. Donc même raisonnement que sur Windows 7.
4- J'ai ;)

Résultat:
[code:1]
#Récupération de la version de l'OS
$OSVersion = (Get-WmiObject -Class Win32_operatingsystem).Version

#Déclaration du logontype en fonction de la version
Switch -Wildcard ($OSVersion){
\&quot;6.1.*\&quot; {$logontype=2}
\&quot;10.0.*\&quot; {$logontype=11}
default {$logontype=2}
}

$filterXML = @\&quot;
&lt;QueryList&gt;
&lt;Query Id=\&quot;0\&quot; Path=\&quot;Security\&quot;&gt;
&lt;Select Path=\&quot;Security\&quot;&gt;
(*[System[(EventID = 4624 )]] and *[EventData[Data[@Name='LogonType']='$logontype']])
&lt;/Select&gt;
&lt;/Query&gt;
&lt;/QueryList&gt;
\&quot;@

#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 \&quot;\&quot;«») {
# 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 += $_.\&quot;#text\&quot; }
}
}
$descrip = ($comptes | Group-Object | Sort-object Count -Descending | select count, name)[0].Name
}
# Ecriture de la description dans un fichier au nom de l'ordinateur
\&quot; \&quot; | select @{n=\&quot;computer\&quot;;e={$computer}}, @{n=\&quot;description\&quot;;e={$descrip}} | export-Csv :\partage_description\$computer.csv
[/code:1]

Le switch permettra de mettre en place plus de degré en fonction de l'OS. Je me suis permit de mettre un Default partant du principe qu'antérieur à Windows 7 le fonctionnement est le même, mais je peux me tromper.

Message édité par: NicolasB, à: 26/01/16 13:07<br><br>Message édité par: NicolasB, à: 26/01/16 13:08

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

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