Question Modification propriétés utilisateurs AD

Plus d'informations
il y a 12 ans 11 mois #15024 par Philippe
par contre, par habitude pense a la gestion des erreurs :
- que faire si le fichier users est absent
- que faire si l'utilisateur ne ce trouve pas dans l'AD.

utilise try catch pour ca

ex :
try
{
code avec possible erreur
}
catch
{
gestion de l'erreur
soit je fait rien
soit j'envoie une alerte
- ou/et je fait une action special
- ou/et j'arrete le script
}<br><br>Message édité par: 6ratgus, à: 3/06/13 16:42

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

Plus d'informations
il y a 12 ans 11 mois #15036 par nicolas
Merci pour les renseignements 6ratgus.

Je n'avais pas prévu plein de détail assez génant ^^.

Il faut que je renvoi dans un fichier txt les personnes qui n'ont pas de login ($sam null) puis que je fasse gaffe si les login on été crée avec le patronyme ou le nom usuel et des homonymes enfin bref de quoi travailler encore un peu sur le sujet^^

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

Plus d'informations
il y a 12 ans 11 mois #15040 par Philippe

Je n'avais pas prévu plein de détail assez génant ^^.

et oui, des qu'on commence serieusement les choses, ils y a beaucoup de choses a prevoir :(
mais rapidement tu te retrouve avec un ensemble de routine que tu peut reutilisé B)

bon courage pour la suite !
le forum reste ouvert pour de l'aide :)

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

Plus d'informations
il y a 12 ans 11 mois #15058 par nicolas
Me revoici ^^ désolé, mais j'ai code qui fonctionne mais ne correspond pas a mes attente.

[code:1]Import-module activedirectory

$Users = Import-csv c:\agent.csv -Delimiter \&quot;;\&quot;

foreach($user in $Users){

$nom = $user.nom_usuel
$prenom = $user.prenom


$sam =get-ADuser -Filter {sn -eq $nom} -SearchBase 'ou=xxxxxxxxx,ou=xxxx,dc=xxx,dc=xx' | select SamAccountName,Surname
echo \&quot;$sam\&quot;

if($nom -ne $sam.Surname){

$nom | out-file -append c:\Utilisateur_NonAD.csv
}
else {

if ($nom.length -Le \&quot;6\&quot;«»){
$nomMinus = $nom.ToLower()
$deuxprenom = $prenom.Substring(0,2)
$deuxprenomMinus = $deuxprenom.ToLower()
$loginInf = $nomMinus + $deuxprenomMinus
Write-Host $loginInf
}
if($loginInf -eq $sam.SamAccountName){Write-Host \&quot;loginInf`n\&quot;}
else {Write-Host \&quot;loginInf Mauvais`n\&quot;
$nom | out-file -append c:\SAM_MauvaisINF.csv}

}
if($nom.Length -ge \&quot;6\&quot;«») {
$sixnom = $nom.Substring(0,6)
$deuxprenom = $prenom.Substring(0,2)
$sixnomMinus = $sixnom.ToLower()
$deuxprenomMinus = $deuxprenom.ToLower()
$loginSup = $sixnomMinus + $deuxprenomMinus
Write-Host $loginSup

if($loginSup -eq $sam.SamAccountName){Write-Host \&quot;loginSup\&quot;}
else{ Write-Host \&quot;loginSub Mauvais `n\&quot;
$nom | out-file -append c:\SAM_MauvaisSUP.csv}

}



}[/code:1]

Je voudrais que quand les personnes passe par le premier if et qu'il correspond aux critères s'envoie dans le fichier csv et y RESTE lol, parce-que enfaite il passe puis passe dans les suivants ce qui ne va pas. Enfaite je voudrais en quelque sorte les exclures dans le fichier csv et laisser les autres faire leur chemin^^

PS : Je sais que le code est une usine à gaz :whistle:

Merci Nicolas<br><br>Message édité par: nicolas10, à: 5/06/13 15:47

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

Plus d'informations
il y a 12 ans 11 mois #15067 par Philippe
bonjour nicolas

si tu code fonctionne, je te conseille t'utilisé Powershell ISE pour executer pas a pas ton script.
tu verra ainsi ce qui ce passe dans le script !

edit : petite correction dans le script
edit 2 : en faite apres correction ton script est identique (desoler) :whistle:
tout est explique dans le post suivant<br><br>Message édité par: 6ratgus, à: 5/06/13 17:48

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

Plus d'informations
il y a 12 ans 11 mois #15069 par Philippe
ton script ne fonctionne pas corectement (ca se vois bien en mode debogage pas à pas)

1)

quand un utilisateur n'existe pas dans l'AD l'instruction get-aduser retourne l'erreur suivant :
[code:1]Get-ADUser : Impossible de trouver un objet avec l’identité « test »......[/code:1]la variable $sam n'est pas renseigné et donc la ligne suivante ne sert a rien :[code:1]if($nom -ne $sam.Surname){[/code:1]

tu doit utilisé try catch pour ce probleme (debut de ta gestion d'erreur) :

[code:1]try {
# recup des info utilisateur
$sam =get-ADuser -Filter {sn -eq $nom} -SearchBase 'ou=xxxxxxxxx,ou=xxxx,dc=xxx,dc=xx' | select SamAccountName,Surname
# gestion du login
# login de inferieur ou egale a 6 car
if ($nom.length -Le 6) {
.
.
# login de superieur a 6 car
if ($nom.Length -gt 6) {

.
}
catch {
# gestion de l'erreur : Get-ADUser :Impossible de trouver un objet avec l’identité
$nom | out-file -append c:\Utilisateur_NonAD.csv
}[/code:1]


2)

je ne sais pas quelle est la regle pour tes logins mais le test de longeur ete mauvais. (voir exemple ci-dessus)
tu peut aussi garder ta premiere version qui fonctionné le 03/05/2013 (voir ton post du 3)

Message édité par: 6ratgus, à: 5/06/13 17:51<br><br>Message édité par: 6ratgus, à: 5/06/13 17:56

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

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