Question [Résolu] conversion du lastlogon ds l'AD

Plus d'informations
il y a 17 ans 4 mois #3207 par rodriguez
Bonjour,

voici un petit script tout simple qui va chercher la derniere connection d'un utilisateur et essais de le convertir en Date correcte et non pas en 64Bits.

Mais voila en prenant le même exemple que le livre d'arnaud et Robin page 194.

j'ai une erreur:
$lastlogon = $user.Properties.[\"lastlogon\"], il ne trouve pas le lastlogon.

si j'ecris:
$lastlogon = $user.Properties.lastlogon

il trouve bien le lastlogon mais il ne peut appliquer:

$date_derniere_connexion = $date.addticks($lastlogon)

car pour lui $lastlogon est:
System.DirectoryServices.ResultPropertyValueCollection\",
et non pas de type \"System.Int64\" pour faire la conversion.


Ma question est donc comment arriver à faire croire que le résultat retourner dans $lastlogon est bien :
de type \"System.Int64\".


Merci.



[code:1]
$ldapquery = [ADSI] 'LDAP://OU=Users,OU=LAV,OU=rEU,OU=client,DC=in1,DC=ad,DC=innovene,DC=com'

$objrechercher = New-object system.directoryservices.directorysearcher($ldapQuery)
$objrechercher.filter ='(&(objectClass=person)(objectCategory=person))'



$ldapquery

$boucle = $objrechercher.findall()



foreach ($user in $boucle)
{


$name = $user.properties.name

$lastlogon = $user.Properties.[\"lastlogon\"]

$date = (get-date –year 1601 –month 1 –day 1 –hour 0 –minute 0 –second 0)

$date_derniere_connexion = $date.addticks($lastlogon)

Write-Host $date_derniere_connexion
}

[/code:1]<br><br>Message édité par: noxydius, à: 17/11/08 10:19

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

Plus d'informations
il y a 17 ans 4 mois #3210 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:Conversion du
noxydius écrit:

car pour lui $lastlogon est:
System.DirectoryServices.ResultPropertyValueCollection\&quot;,
et non pas de type \&quot;System.Int64\&quot; pour faire la conversion.

C'est une collection dans ce cas voir la propriété Item.

noxydius écrit:

Ma question est donc comment arriver à faire croire que le résultat retourner dans $lastlogon est bien :
de type \&quot;System.Int64\&quot;.

On transforme la valeur par un cast :
[code:1]
(10).gettype()
#Cast/transformation
([long]10).gettype()
[/code:1]

Tutoriels PowerShell

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

Plus d'informations
il y a 17 ans 4 mois #3212 par rodriguez
Réponse de rodriguez sur le sujet Re:Conversion du
Laurent Dardenne écrit:

noxydius écrit:

car pour lui $lastlogon est:
System.DirectoryServices.ResultPropertyValueCollection\&quot;,
et non pas de type \&quot;System.Int64\&quot; pour faire la conversion.

C'est une collection dans ce cas voir la propriété Item.

noxydius écrit:

Ma question est donc comment arriver à faire croire que le résultat retourner dans $lastlogon est bien :
de type \&quot;System.Int64\&quot;.

On transforme la valeur par un cast :
[code:1]
(10).gettype()
#Cast/transformation
([long]10).gettype()
[/code:1]



Merci Laurent,
mais je ne comprends ce que je dois chercher, que signifie \&quot;Item\&quot;

et en ce qui concerne ton exemple au sujet de transformer la valeur je pensais utiliser [int64] mais ca ne fonctionne pas... il ne veut pas faire la transformation.

ton code:
[code:1]
(10).gettype()
#Cast/transformation
([long]10).gettype()
[/code:1][/quote]

je ne vois pas comment l'interpréter :(

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

Plus d'informations
il y a 17 ans 4 mois #3222 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:Conversion du
noxydius écrit:

mais je ne comprends ce que je dois chercher, que signifie \&quot;Item\&quot;

C'est une propriété de la collection ( n objets, item=1 objet), dans ce cas $lastlogon.Item[x] doit te renvoyer une valeur. Si c'est une collection elle a aussi la propriété $lastlogon.count.
Il faut donc que cette collection ait au moins un élément.
Regarde cet exemple : www.visualbasicscript.com/m_64851/mpage_1/key_/tm.htm#65350

noxydius écrit:

et en ce qui concerne ton exemple au sujet de transformer la valeur je pensais utiliser [int64] mais ca ne fonctionne pas... il ne veut pas faire la transformation.

Tu parles de mon exemple ou du tien ?
Sans code je ne peux pas dire grand chose si ce n'est qu'on ne peut pas transformer une collection en un entier (long ou pas)
Long est un alias sur Int64.

As-tu compris les principes de base de l'objet ?<br><br>Message édité par: Laurent Dardenne, à: 13/11/08 11:39

Tutoriels PowerShell

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

Plus d'informations
il y a 17 ans 4 mois #3225 par Robin Lemesle
Réponse de Robin Lemesle sur le sujet Re:Conversion du
Hy noxydius,

Pour nous éclairer un peu, peu tu nous dire quelle est ta valeur de $lastlogon (après avoir fait $lastlogon = $user.Properties.lastlogon). Est-ce un tableau (collection) ou tu obtient un chiffre de 64Bits ?

Rob1

Robin MVP PowerShell

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

Plus d'informations
il y a 17 ans 4 mois #3233 par rodriguez
Réponse de rodriguez sur le sujet Re:Conversion du
Bonjour à vous deux,

Laurent,

Tu parles de mon exemple ou du tien ?
Sans code je ne peux pas dire grand chose si ce n'est qu'on ne peut pas transformer une collection en un entier (long ou pas)
Long est un alias sur Int64.

As-tu compris les principes de base de l'objet ?&lt;br&gt;&lt;br&gt;Message édité par: Laurent Dardenne, à: 13/11/08 11:39


[/quote]

Je commence a cerner un peu les differentes classe et leur role. Mais je rame encore beaucoup....

Et effectivement je parlais de test que j'avais effectué.
Qui etait bien de transformer mon résultat $lastlogon
qui etait une collection en un entier 64bits.


[code:1]
$ldapquery = [ADSI] 'LDAP://OU=Users,OU=LAV,OU=rEU,OU=client,DC=in1,DC=ad,DC=innovene,DC=com'

$objrechercher = New-object system.directoryservices.directorysearcher($ldapQuery)
$objrechercher.filter ='(&amp;(objectClass=person)(objectCategory=person))'



$ldapquery

$boucle = $objrechercher.findall()



foreach ($user in $boucle)
{
$lastlogon = $user.Properties.lastlogon
$lastlogon=[int64]$lastlogon

}
[/code:1]

Robin,
oui j'ai apres:
$lastlogon = $user.Properties.lastlogon

J'ai un chiffre en 64bits, c'est pour ca que je voulais le forcer en Entier 64Bits pour ensuite utiliser:

$date = (get-date –year 1601 –month 1 –day 1 –hour 0 –minute 0 –second 0)

$date_derniere_connexion = $date.addticks($lastlogon)

pour avoir une date utilisable et faire recuperer tous les noms avec une derniere connection superieures à 6 mois.

Donc pour le moment je suis bloqué.<br><br>Message édité par: noxydius, à: 14/11/08 08:52

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

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