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

Plus d'informations
il y a 8 ans 1 mois #21531 par Philippe
salut galadan

l'erreur indique que l'on essai d'accédé à un tableau alors que l'objet n'a qu'un seul élément (donc pas un tableau)
maintenant ce cas est pris en compte !
il restera le cas ou aucun utilisateur ne c'est connecté au pc ou depuis trop longtemps pour qu'il soit dans le journal d'évènement mais c'est un cas très rare qui ne devrais pas posé de problème

voici la dernière correction ! dernière car pour la prochaine erreur tu aura de l'aide, des indications mais pas de correctif :ohmy:
la période de garantie est terminé !! :evil:
mais ne t'inquiète pas on te laissera pas dans la mer..

[code:1]
$filterXML = @\"
<QueryList>
<Query Id=\"0\" Path=\"Security\">
<Select Path=\"Security\">
(*[System[(EventID = 4624 )]] and ((
*[EventData[Data[@Name='LogonType']='2']] or
*[EventData[Data[@Name='LogonType']='7']]) and
*[EventData[Data[@Name='TargetUserName']!='DWM-1']] and
*[EventData[Data[@Name='TargetUserName']!='DWM-2']] and
*[EventData[Data[@Name='TargetUserName']!='DWM-3']] ))
</Select>
</Query>
</QueryList>
\"@

#Récupération du nom du PC
$computer = $env:COMPUTERNAME
#Récupération de la description de l'ordinateur
$description = (Get-WmiObject -class win32_operatingsystem |select Description).description

# si la description est vide
if ($description.Trim() -eq \"\"«») {
# 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'} {$comptesName = $_.\"#text\"}
}
$comptes += $eventXML.Event.System.TimeCreated | Select-Object @{n='User';e={$comptesName}},@{n='TimeLog';e={$_.SystemTime}}
}
$comptesGroup = $comptes | Group-Object User | Sort-Object Count -Descending
$comptesGroupCount = $comptesGroup | Group-Object Count
if (($comptesGroupCount | Measure-Object).count -eq 1 -and $comptesGroupCount.Count -eq 1) {
$login = ($comptesGroup).Name
}
else {
$comptesGroupCount = $comptesGroupCount | Group-Object Count
if ($comptesGroupCount.Count -gt 1) {
$login = ($comptesGroup[0]).Name
}
else {
$login = $($comptesGroup | foreach {$_.Group} | Sort-Object TimeLog -Descending)[0].User
}
}
}
$description = (Get-WmiObject Win32_UserAccount -Filter \"name = '$login'\"«»).FullName
}

# Ecriture de la description dans un fichier au nom de l'ordinateur
\" \" | select @{n=\"computer\";e={$computer}}, @{n=\"description\";e={$description}} | export-Csv c:\$computer.csv -Encoding Unicode
[/code:1]

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

Plus d'informations
il y a 8 ans 1 mois #21533 par Galadan
Merci :)

ça marche!! ;)
Pas de soucis ça me feras que du bien d'avoir seulement quelques indications!! :)

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

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