Question Tableau 2 dimensions

Plus d'informations
il y a 17 ans 3 mois #3509 par clem
Réponse de clem sur le sujet Re:Tableau 2 dimensions
J'ai 3 requetes sur 3 controleur de domaines

$CompList1 = $ads.findall()
$CompList2 = $ads.findall()
$CompList3 = $ads.findall()

ca me donne donc 3 tableaux avec des lastlogon different (donc 3) pour chaque user (je suis en domaine win2000 natif et lastlogon n'est pas repliqué)

En gros, je fait un foreach dans le premier $complist et à l'interieur de celui-ci, je refait un foreach sur $complist2 pour trouver le meme nom d'user et donc recuperer son 2e lastlogon

Pareil pour le $complist3

J'unifie ces données en un seul tableau et ca me permet de retrouver plus facilement (grace à une autre fonction qui lit les lastlogon sur chaque ligne) de retrouver la date de connexion la plus recente sur le domaine parmis ces 3 lastlogon

En meme temps, comme je debute, j'exporterai ce tableau vers un fichier par exemple, pour verifier (manuellement) que les valeurs sont bonnes.

Bref,je sais pas si je suis clair! pas evident qd on débute !

Merci, je testerai ca demain matin je pense

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

Plus d'informations
il y a 17 ans 3 mois #3510 par clem
Réponse de clem sur le sujet Re:Tableau 2 dimensions
Finalement je viens d'essayer et j'ai une erreur, je vois pas de souci de syntaxe pourtant ....

[code:1]Expression d'index de tableau manquante ou non valide.
A la ligne 103, position 7
+ $Tab=@{Name=$username_goudurix;LastLogonGoudurix=$user_goudurix.Properties.lastlogon;DateGoudurix=$date_goudurix;LastLogonKeskonrix=$user_keskonrix.Properties.lastlogon;DateKeskonrix=$date_keskonrix;LastLogonRamollix=$user_ramollix.Properties.lastlogon;Dateramollix=$date_ramollix} # etc[/code:1]


avec $Tab=@ je n'ai pas d'erreur de \"compilation\" (c'est pas le bon terme je sais!) mais du coup ca perd de son interet sans index si je dit pas de betises

et avec $tab[$index] c'est pas mieux.....

Message édité par: clem, à: 18/12/08 16:49

Message édité par: clem, à: 18/12/08 16:53<br><br>Message édité par: clem, à: 18/12/08 18:55

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

Plus d'informations
il y a 17 ans 3 mois #3511 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:Tableau 2 dimensions
clem écrit:

J'ai 3 requetes sur 3 controleur de domaines

On met donc à jour les specs...
clem écrit:

En gros,

Bah moi je fais dans le détail, le développement \&quot;en gros\&quot; je ne sais pas faire.
clem écrit:

Bref,je sais pas si je suis clair! pas evident qd on débute !

D'être débutant n'est pas le problème, en revanche de donner les infos au compte-gouttes est plutôt embêtant pour toi puisqu'on ne dispose pas de toutes les infos pour t'aider.
Mais je te laisse le droit de mettre à l'épreuve la patience de tes lecteurs.
clem écrit:

Finalement je viens d'essayer et j'ai une erreur, je vois pas de souci de syntaxe pourtant ....

Moi aussi j'ai une erreur car ma boule de cristal vient de tomber en panne. Comment veux-tu qu'on puisse t'aider si tu ne communiques pas le code utilisé ?
clem écrit:

je n'ai pas d'erreur de \&quot;compilation\&quot; (c'est le bon terme je sais!)

Il me semble qu'il manque une négation dans ta phrase...

Tutoriels PowerShell

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

Plus d'informations
il y a 17 ans 3 mois #3512 par clem
Réponse de clem sur le sujet Re:Tableau 2 dimensions
Ok, je te sent agacé la !

Met toi à ma place, j'ai acheté le bouquin conseillé sur ce même site il y a 3 semaines et j'ai donc a peine 21 jours d'experiences de powershell.

Tu me demande en fait d'être plus précis, je le comprend, mais ce n'est pas possible de te donner spontanément toutes les précisions dont tu as besoin, je n'ai pas encore ces reflexes.

Maintenant si tu estimes que je met la patience des lecteurs a rude épreuve, tu m'en voit désolé.

Ma question portait simplement sur les possibilités de syntaxe des tableaux, et tu m'as répondu, ensuite, si quelqu'un est prêt à m'aider (avec patience!) sur ma problématique de A à Z, et bien je copie tout mon script (faut juste demander en fait !)demain matin et j'essaierai d'avancer, avec votre aide si possible.


Peace.

A+

Message édité par: clem, à: 18/12/08 19:09<br><br>Message édité par: clem, à: 18/12/08 19:14

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

Plus d'informations
il y a 17 ans 3 mois #3513 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:Tableau 2 dimensions
clem écrit:

Met toi à ma place,

J'essaie l'empathie effectivement.
clem écrit:

j'ai donc a peine 21 jours d'experiences de powershell.

Pour moi, et je le répète, la question n'est pas là.
clem écrit:

Ok, je te sent agacé la !

Suis-je agacé ou est-ce agacant de devoir chercher les infos pour aider autrui et de devoir porter la faute dés que l'on est franc?
Bonne question effectivement! C'est vrai que j'aurais pu ne pas répondre.
clem écrit:

mais ce n'est pas possible de te donner spontanément toutes les précisions dont tu as besoin, je n'ai pas encore ces reflexes.

C'est pour toi que je les demande, donc aide moi à t'aider. L'empathie est à double sens.
clem écrit:

Maintenant si tu estimes que je met la patience des lecteurs a rude épreuve, tu m'en voit désolé.

C'est effectivement une mauvaise formulation de ma part, jusqu'à preuve du contraire un lecteur n'apporte rien sur un forum, bon c'est une blague tirée par les cheveux c'est vrai, cf. ce post .
clem écrit:

faut juste demander en fait

ouai c'est ce que je fais il me semble.
Mais je peux pratiquer cet adage de circonstance : \&quot;qui n'apporte rien et ne s'agace de rien\&quot;
Donc je te le confirme je suis un bon à rien mais je suis prêt à tout ;-)

Tutoriels PowerShell

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

Plus d'informations
il y a 17 ans 3 mois #3514 par clem
Réponse de clem sur le sujet Re:Tableau 2 dimensions
Bonjour,

Je rappel la problématique : trouver le lastlogon d'un user sur un domaine en win200 natif avec 3 controleurs de domaine.
Je recupere donc les dates sur chaque controleur et recherche la date la plus recente.

Voici le code que j'ai mis en place :

[code:1]#tri les dates d'un tableau d'objet Date-time dans l'ordre croissant
function SortMyDate([datetime[]]$ptab)
{

$tab=$ptab
$tabtmp

$tab

for ($i = 0 ; $i -lt $tab.Length - 1 ; $i++)
{
for ($j = $i + 1; $j -lt $tab.Length ; $j++)
{
if (($tab[$i].CompareTo($tab[$j]) -eq 1))
{
$tmp = $tab[$j]
$tab[$j] = $tab[$i]
$tab[$i] = $tmp
}
}
}

}

Function Get-UTCAge
{
#get date time $last derniere connection
Param([int64]$Last=0)

if ($Last -eq 0)
{
write 0
}
else
{
#clock starts counting from 1/1/1601.
[datetime]$utc=\&quot;1/1/1601\&quot;

#calculate the number of days based on the int64 number
$i=$Last/864000000000

#Add the number of days to 1/1/1601
#and write the result to the pipeline

$days = ($utc.adddays($i))
}
return $days

} # end Get-UTCAge function

cls

#variables string pour chaque controleur de domaine
$dcgoudurix= 'goudurix'
$dckeskonrix= 'keskonrix'
$dcramollix = 'ramollix'

$ldapQuery = \&quot;(&amp;(objectCategory=user))\&quot;

#requete de tous les users sur le premier DC
$de = new-object system.directoryservices.directoryentry (\&quot;LDAP://$dcgoudurix/dc=mondomaine,dc=fr\&quot;«»)
$ads = new-object system.directoryservices.directorysearcher -argumentlist $de,$ldapQuery
$complistgoudurix = $ads.findall()

#requete de tous les users sur le second DC
$de = new-object system.directoryservices.directoryentry (\&quot;LDAP://$dckeskonrix/dc=mondomaine,dc=fr\&quot;«»)
$ads = new-object system.directoryservices.directorysearcher -argumentlist $de,$ldapQuery
$complistkeskonrix = $ads.findall()

#requete de tous les users sur le troisieme DC
$de = new-object system.directoryservices.directoryentry (\&quot;LDAP://$dcramollix/dc=mondomaine,dc=fr\&quot;«»)
$ads = new-object system.directoryservices.directorysearcher -argumentlist $de,$ldapQuery
$complistramollix = $ads.findall()

#parcours de la liste complistgoudurix
foreach ($user_goudurix in $complistgoudurix )
{
#recuperer le nom, le lastlogon (int64),le mail et la date de dernière connexion(date-time) de l'utilisateur courant sur le DC goudurix
$username_goudurix = $user_goudurix.properties.name
$user_lastlogon_goudurix = $user_goudurix.Properties.lastlogon
$user_mail = $user_goudurix.Properties.mail
$date_goudurix=Get-UTCAge $user_goudurix.properties.item(\&quot;lastlogon\&quot;«»)[0]

#recherche de l'utilisateur en cours dans la liste complistkeskonrix
foreach ($user_keskonrix in $complistkeskonrix )
{
if($user_keskonrix.properties.name -like $username_goudurix)
{
#conversion et recuperation de la date
$date_keskonrix=Get-UTCAge $user_keskonrix.properties.item(\&quot;lastlogon\&quot;«»)[0]
break
}
}

#recherche de l'utilisateur en cours dans la liste complistramollix
foreach ($user_ramollix in $complistramollix )
{
if($user_ramollix.properties.name -like $username_goudurix)
{
#conversion et recuperation de la date
$date_ramollix=Get-UTCAge $user_ramollix.properties.item(\&quot;lastlogon\&quot;«»)[0]
break
}
}

$Type=$compListgoudurix[0].GetType()
#Crée un tableau d'objet d'une taille égale à celle de la collection $CompList
$Tab=new-object Object[] $CompListgoudurix.Count

#mise en forme d'un tableau unifié avec le nom d'user, les lastlogon (entier 64bits) et les lastlogon convertis en format lisible (type date-time) pour chaque DC
$Tab[Index]=@{Name=$username_goudurix;LastLogonGoudurix=$user_goudurix.Properties.lastlogon;DateGoudurix=$date_goudurix;LastLogonKeskonrix=$user_keskonrix.Properties.lastlogon;DateKeskonrix=$date_keskonrix;LastLogonRamollix=$user_ramollix.Properties.lastlogon;Dateramollix=$date_ramollix}
$Index++

}[/code:1]

Donc mon problème pour linstant, se trouve au niveau de la creation du tableau qui regroupe tous les lastlogon pour chaque user, erreur :

[code:1]
Expression d'index de tableau manquante ou non valide.
A la ligne 111, position 7
+ $Tab=@{Name=$username_goudurix;LastLogonGoudurix=$user_goudurix.Properties.lastlogon;DateGoudurix=$date_goudurix;LastLogonKeskonrix=$user_keskonrix.Properties.lastlogon;DateKeskonrix=$date_keskonrix;LastLogonRamollix=$user_ramollix.Properties.lastlogon;Dateramollix=$date_ramollix}
[/code:1]

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

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