Question Ne pas créer une O.U si elle existe déjà

Plus d'informations
il y a 13 ans 3 mois #13367 par Derickxsen
Bonjour

Je suis vraiment tout nouveau dans le domaine du powershell et je n'arrive vraiment pas a trouver la solution a mon probleme qui va surement vous paraitre tout simple.

Je possède un fichier CSV détaillé comme ceci:

[code:1]
Login;Nom;Prenom;Classe;Password
XX;XX;XX;1L;XX
yy;yy;yy;1L;yy
zz;zz;zz;1S;zz[/code:1]

Cette partie de script me permet de créer les O.U correspondant aux différentes classes mais le problème que j'ai, c'est qu'il me génère une erreur dès que la classe a déjà été crée

[code:1]
Foreach ($User in $Userse)
{
$OU=\"OU=eleves,DC=xx,DC=xx\"
$Classe=$User.Classe

New-ADOrganizationalUnit -Name $Classe -Path \"OU=eleves,DC=xx,DC=xx\"
}
[/code:1]


Est-il possible de rajouter une fonction me permettant de tester si l'O.U a déjà été crée et si oui de passer à la suivante?

Je ne sais pas si c'est très clair pour vous, mais je vous remercie déjà de l'attention que vous pourrez y apporter.<br><br>Message édité par: Arnaud, à: 19/12/12 22:22

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

Plus d'informations
il y a 13 ans 3 mois #13374 par Richard Lazaro
Bonjour,

Au lieu de faire une action pour vérifier si elle existe déjà, utilise plutôt une gestion d'erreur (try..catch avec la version 2 de powershell).

Cela rendra ton script moins gourmand pour au final faire la même chose, ne pas créer l'OU si elle existe déjà.

Bien Cordialement,
Richard Lazaro.

Think-MS : (Get-Life).Days | %{ Learn-More }

\\&quot;Problems cannot be solved by the same level of thinking that created them.\\&quot; - Albert Einstein

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

Plus d'informations
il y a 13 ans 3 mois #13376 par Derickxsen
Tout d'abord merci pour ta réponse Richard

A la suite de mon post, j'ai trouvé aussi la commande trap. Est-ce dans le même but?
Si j'ai bien compris, en ajoutant la variable
$ErrorActionPreference=\&quot;silentcontinue\&quot;
les erreurs n'apparaissent plus mais avec Trap, on récupère que celles qui nous interessent?

Dans ce cas comment récupérer le type de l'erreur qui m'interesse?
J'ai trouvé dans le bouquin une piste mais je n'arrive pas à la reproduire pour mon script.

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

Plus d'informations
il y a 13 ans 3 mois #13389 par Arnaud Petitjean
Bonsoir,

S'il s'agit uniquement de masquer les erreurs il suffit d'utiliser le parametre commun -ErrorAction (donc applicable a toutes les commandelettes).

Donc ca pourrait donner quelque chose commme cela:

[code:1]New-ADOrganizationalUnit -Name $Classe -Path \&quot;OU=eleves,DC=xx,DC=xx\&quot; -ErrorAction SilentlyContinue[/code:1]

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 13 ans 3 mois #13390 par Derickxsen
Bonsoir

Merci Arnaud

J'avais trouvé effectivement cette astuce, mais il y a dans mon script des erreurs notamment de création de comptes d'utilisateurs que je ne veux pas cacher. Or avec ErrorActionPreference SilentlyContinue ça me cache toutes les erreurs!!

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

Plus d'informations
il y a 13 ans 3 mois #13396 par Arnaud Petitjean
Pas tout a fait car avec ce que je te propose tu ne masques uniquement les erreurs de la commande New-ADOrganizationalUnit.

Contrairement au fait de modifier l'etat de la variable $ErrorActionPreference, qui elle en effet s'applique a toute ta session.

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.

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