Question
Tableau 2 dimensions
- clem
- Auteur du sujet
- Hors Ligne
- Membre junior
-
- Messages : 27
- Remerciements reçus 0
$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.
- clem
- Auteur du sujet
- Hors Ligne
- Membre junior
-
- Messages : 27
- Remerciements reçus 0
[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.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
On met donc à jour les specs...J'ai 3 requetes sur 3 controleur de domaines
clem écrit:
Bah moi je fais dans le détail, le développement \"en gros\" je ne sais pas faire.En gros,
clem écrit:
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.Bref,je sais pas si je suis clair! pas evident qd on débute !
Mais je te laisse le droit de mettre à l'épreuve la patience de tes lecteurs.
clem écrit:
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é ?Finalement je viens d'essayer et j'ai une erreur, je vois pas de souci de syntaxe pourtant ....
clem écrit:
Il me semble qu'il manque une négation dans ta phrase...je n'ai pas d'erreur de \"compilation\" (c'est le bon terme je sais!)
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- clem
- Auteur du sujet
- Hors Ligne
- Membre junior
-
- Messages : 27
- Remerciements reçus 0
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.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
J'essaie l'empathie effectivement.Met toi à ma place,
clem écrit:
Pour moi, et je le répète, la question n'est pas là.j'ai donc a peine 21 jours d'experiences de powershell.
clem écrit:
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?Ok, je te sent agacé la !
Bonne question effectivement! C'est vrai que j'aurais pu ne pas répondre.
clem écrit:
C'est pour toi que je les demande, donc aide moi à t'aider. L'empathie est à double sens.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.
clem écrit:
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 .Maintenant si tu estimes que je met la patience des lecteurs a rude épreuve, tu m'en voit désolé.
clem écrit:
ouai c'est ce que je fais il me semble.faut juste demander en fait
Mais je peux pratiquer cet adage de circonstance : \"qui n'apporte rien et ne s'agace de rien\"
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.
- clem
- Auteur du sujet
- Hors Ligne
- Membre junior
-
- Messages : 27
- Remerciements reçus 0
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=\"1/1/1601\"
#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 = \"(&(objectCategory=user))\"
#requete de tous les users sur le premier DC
$de = new-object system.directoryservices.directoryentry (\"LDAP://$dcgoudurix/dc=mondomaine,dc=fr\"«»)
$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 (\"LDAP://$dckeskonrix/dc=mondomaine,dc=fr\"«»)
$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 (\"LDAP://$dcramollix/dc=mondomaine,dc=fr\"«»)
$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(\"lastlogon\"«»)[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(\"lastlogon\"«»)[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(\"lastlogon\"«»)[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.
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Tableau 2 dimensions