Bonjour,
J'essai, à partir d'un script, de retrouver la date et l'heure de la dernière connexion des utilisateurs à l'AD (Active Directory).
Voici mon script de départ :
Code :
- $ldapQuery = "(&(objectCategory=user))"
- $de = new-object system.directoryservices.directoryentry
- $ads = new-object system.directoryservices.directorysearcher -argumentlist $de,$ldapQuery
- $complist = $ads.findall()
- foreach ($i in $complist) {
- $lastlogon = $i.Properties.lastlogontimestamp
- Write-host $lastlogon
- write-host $i.Path
- }
|
Lorsque je fais ça, le terminal m'affiche une valeur qui représente le temps écoulé depuis le 1er janvier 1601 en dizaines de milliers de millisecondes. (ex. : 130927363912565975)
Donc il ne me reste plus qu'a convertir ce nombre en date.
pour cela j'utilise ceci :
Code :
- [datetime]::FromFileTime(130927363912565975)
- qui donne :
- jeudi 26 novembre 2015 06:20:00
|
Jusque là pas de souci, mais là ou j'ai un souci c'est lorsque j'ajoute au-dessus dans mon premier script cette conversion, j'ai un problème.
Voici le script :
Code :
- $ldapQuery = "(&(objectCategory=user))"
- $de = new-object system.directoryservices.directoryentry
- $ads = new-object system.directoryservices.directorysearcher -argumentlist $de,$ldapQuery
- $complist = $ads.findall()
- foreach ($i in $complist) {
- $lastlogon = $i.Properties.lastlogontimestamp
- [datetime]::FromFileTime($lastlogon) # c'est ici que j'ai un souci voir l'erreur renvoyée ci-dessous
- Write-host $lastlogon # j'ai laissé ceci qui m'affiche la valeur en dizaines de milliers de millisecondes
- write-host $i.Path
- }
|
erreur renvoyée :
Impossible de convertir l'argument «fileTime» (valeur «System.DirectoryServices.ResultPropertyValueCollection») de «FromFileTime» en type «System.Int64»: «Impossible de convertir la valeur «
System.DirectoryServices.ResultPropertyValueCollection» du type «System.DirectoryServices.ResultPropertyValueCollection» en type «System.Int64».»
Au caractère C:\Users\monlogin\Documents\Exercices PowerShell\Date dernière connexion des objets à OU.ps1:8 : 1
+ [datetime]::FromFileTime($lastlogon)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (: ) [], MethodException
+ FullyQualifiedErrorId : MethodArgumentConversionInvalidCastArgument
et affiche bien le reste du script aussi:
Code :
- 130927364072372498
- LDAP://CN=James Bond,CN=Users,DC=MI6,DC=BE
|
Si quelqu'un a une solution, je suis preneur... Merci !