Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Shop Recherche
693 connectés 

  FORUM HardWare.fr
  Systèmes & Réseaux Pro
  Management du SI

  [PowerShell] Aide - erreur de mon script

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PowerShell] Aide - erreur de mon script

n°136032
recep
Posté le 02-12-2015 à 10:27:00  profilanswer
 

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 :
  1. $ldapQuery = "(&(objectCategory=user))"
  2. $de = new-object system.directoryservices.directoryentry
  3. $ads = new-object system.directoryservices.directorysearcher -argumentlist $de,$ldapQuery
  4. $complist = $ads.findall()
  5. foreach ($i in $complist) {
  6. $lastlogon = $i.Properties.lastlogontimestamp
  7. Write-host $lastlogon
  8. write-host $i.Path
  9. }


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 :
  1. [datetime]::FromFileTime(130927363912565975)
  2. qui donne :
  3. 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 :
  1. $ldapQuery = "(&(objectCategory=user))"
  2. $de = new-object system.directoryservices.directoryentry
  3. $ads = new-object system.directoryservices.directorysearcher -argumentlist $de,$ldapQuery
  4. $complist = $ads.findall()
  5. foreach ($i in $complist) {
  6. $lastlogon = $i.Properties.lastlogontimestamp
  7. [datetime]::FromFileTime($lastlogon) # c'est ici que j'ai un souci voir l'erreur renvoyée ci-dessous
  8. Write-host $lastlogon # j'ai laissé ceci qui m'affiche la valeur en dizaines de milliers de millisecondes
  9. write-host $i.Path
  10. }


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 :
  1. 130927364072372498
  2. LDAP://CN=James Bond,CN=Users,DC=MI6,DC=BE


 
Si quelqu'un a une solution, je suis preneur... Merci !

mood
Publicité
Posté le 02-12-2015 à 10:27:00  profilanswer
 

n°136035
nebulios
Posté le 02-12-2015 à 10:34:32  profilanswer
 

Mais pourquoi tu n'utilises pas le module Active Directory déjà ?

n°136038
recep
Posté le 02-12-2015 à 11:20:21  profilanswer
 

nebulios a écrit :

Mais pourquoi tu n'utilises pas le module Active Directory déjà ?


Honnêtement, je n'ai jamais utilisé le module AD.

n°136039
Je@nb
Modérateur
In ze cloud
Posté le 02-12-2015 à 11:38:42  profilanswer
 

plutôt

Code :
  1. $lastlogon = $i.Properties.lastlogontimestamp.Value
 

Après j'ai rarement vu un code aussi dégueulasse

Message cité 1 fois
Message édité par Je@nb le 02-12-2015 à 13:23:44
n°136040
recep
Posté le 02-12-2015 à 11:48:27  profilanswer
 

Je@nb a écrit :

plutôt

Code :
  1. $lastlogon = $i.Properties.lastlogontimestamp.Value


 
Après j'ai rarement vu un code aussi dégueulasse


 
Je débute, je ne suis pas expert en Powershell...
 
Sinon, avec le ".Value", j'ai la date du 1 janvier 1601 qui s'affiche pour tous les comptes... (ça voudrait dire que $lastlogon ne reçoit aucune valeur?)


Message édité par recep le 02-12-2015 à 11:51:08
n°136044
nebulios
Posté le 02-12-2015 à 13:18:10  profilanswer
 

Commence par te renseigner sur la façon dont fonctionne Powershell, les modules etc. plutôt que de réinventer la roue alors.

n°136045
Je@nb
Modérateur
In ze cloud
Posté le 02-12-2015 à 13:23:48  profilanswer
 

essaie

Code :
  1. $lastlogon = $i.Properties["lastlogontimestamp"][0]

n°136048
recep
Posté le 02-12-2015 à 15:09:01  profilanswer
 

Je@nb a écrit :

essaie

Code :
  1. $lastlogon = $i.Properties["lastlogontimestamp"][0]



Merci cela fonctionne...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Systèmes & Réseaux Pro
  Management du SI

  [PowerShell] Aide - erreur de mon script

 

Sujets relatifs
powershell - script sauvegarde avec gestion des semaines [RESOLU][AIDE] SCCM 2012 déploiement Software Updates ne fonctionne pas
Aide pour identifier et équiper une baieAide pour Reseau ethernet HS 30ml box sfr à TV (ou wii u)
Besoin d'aide pour un routage statiqueErreur de réplication sysvol Windows 2012 R2
Aide choix et configuration VPNErreur du NTbackup sur windows 2008 r2
Script en .bat via gpo en ouverture de session utilisateur 
Plus de sujets relatifs à : [PowerShell] Aide - erreur de mon script


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR