Question [RESOLU] samaccountname vide à l'affichage.

Plus d'informations
il y a 14 ans 2 mois #10965 par Vincent
Bonjour tout le monde.

Je commence avec Powershell et je rencontre quelques soucis de compréhension. Je soouhaite faire une recherche dans un Active Directory des comptes utilisateurs ayant un LastLogonTimeStamp vieux de x jours.

La foret est en niveau fonctionnel 2008 et le domaine en niveau fonctionnel 2003 donc l'attribut LastLogonTimestamp est bien répliqué sur chaque DC (ça n'aurait pas été le cas avec du 2000).

voici mon script:
[code:1]$NbJoursNonCo=90
[datetime]$date='01/01/1601'
$ObjAdConnect=[ADSI]'LDAP://OU=Mon_OU,DC=mon_Domaine,DC=com'
$ObjJeRecherche=New-Object System.DirectoryServices.DirectorySearcher($ObjAdConnect)
$ObjJeRecherche.PageSize=1000
$ObjJeRecherche.Filter='(&(objectclass=user)(objectclass=person))'
$Users=$ObjJeRecherche.FindAll()
$Users | Select-Object @{e={$_.properties.sn};n=\"Nom\"},@{e={$_.properties.givenname};n=\"Prenom\"},@{e={$_.properties.sAMAccountName};n=\"Login\"},`
@{e={$_.properties.mail};n=\"Adresse E-mail\"},@{e={$date.AddTicks($($_.properties.lastlogontimestamp))};n=\"Derniere Connexion\"}`
|Where-Object {(New-TimeSpan $_.\"Derniere Connexion\" $(Get-Date)).days -ge $NbJoursNonCo} | Format-Table
[/code:1]

ce code me retourne bien une liste d'utilisateurs, nom, prénom, Login VIDE, email et date de dernière connexion.

ce que je ne comprendans pas c'est que par exemple[code:1]$users[1].properties.samaccountname[/code:1] me retourne bien un résultat mais pas le selec-object du script.

voici un autre exemple qui fonctionne:
[code:1]foreach ($usr in $Users){$usr.Properties.samaccountname}[/code:1]

je ne comprend donc pas pourquoi mon premier script refuse de me retourner un résultat. C'est clairement un problème de compréhension de ma part mais là je coince.

Pouvez vous m'expliquer ce qui ne va pas?

Merci d'avance pour votre aide.

[EDIT]

Bon bah j'ai retaper la ligne en mettant samaccountname tout en minuscule...et là ça fonctionne...<br><br>Message édité par: Shiby, à: 17/01/12 08:43

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

Plus d'informations
il y a 14 ans 2 mois #11002 par Arnaud Petitjean
Salut,

PowerShell n'est pas sensible a la casse, ni les proprietes des objets. Je pense plutot qu'il s'agit d'une erreur de frappe.

Sache que la commandelette Set-StrictMode peut t'aider a renforcer les regles d'interpretation de PowerShell, comme retourner une erreur en cas de tentative d'acces a une propriete qui n'existe pas ou a des variables non definies.

Exemple:
[code:1]
PS &gt; $a=\&quot;bonjour\&quot;
PS &gt; $a.lenght # notez l'erreur de frappe classique. PowerShell ne retourne pas d'erreur.

PS &gt; Set-StrictMode -Version 2
PS &gt; $a.lenght
Property 'lenght' cannot be found on this object. Make sure that it exists.
At line:1 char:4
+ $a. &lt;&lt;&lt;&lt; lenght
+ CategoryInfo : InvalidOperation: (.:OperatorToken) [], RuntimeException
+ FullyQualifiedErrorId : PropertyNotFoundStrict
[/code:1]

Je pense que si tu avais fais cela, tu aurais eu le meme genre de message d'erreur.

Bonne pratique, a retenir, donc. ;)

Arnaud

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?

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

Plus d'informations
il y a 14 ans 2 mois #11006 par Arnaud Petitjean

PowerShell n'est pas sensible a la casse, ni les proprietes des objets. Je pense plutot qu'il s'agit d'une erreur de frappe.


Petit rectificatif, voir ce post.

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?

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

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