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

 



Dernière réponse
Sujet : [PowerShell] Aide - erreur de mon script
recep

Je@nb a écrit :

essaie

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



Merci cela fonctionne...


Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
recep

Je@nb a écrit :

essaie

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



Merci cela fonctionne...

Je@nb essaie

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

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

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?)

Je@nb plutôt

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

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

recep

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.

nebulios Mais pourquoi tu n'utilises pas le module Active Directory déjà ?
recep 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 !


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