Question aide pour corriger script AD

Plus d'informations
il y a 2 semaines 6 jours - il y a 2 semaines 6 jours #30434 par Laurent Dardenne
Un oubli enfin 2:
Pour :
$UGs=import-csv -path "C:\users-domjacom.csv" -delimiter ";"

Si possible essaie d'avoir une source de données, dans ce cas les noms d'utilisateurs associés aux groupse peuvent être différent de ceux indiqués dans le premier fichier.

Pour ceci :
write-host -ForegroundColor $MyForegroundColor2 "l'utilisateur $name n'a pas de groupe principal"
write-host "voulez vous indiquer un groupe pour l'utilsateur $name ?"

Je préfére avoir toutes les infos nécessaires avant de lancer le traitement.
Enfin toutes les saisies de ce script sont supposées être valide, ce qui n'est pas toujours le cas.

Tutoriels PowerShell
Dernière édition: il y a 2 semaines 6 jours par Laurent Dardenne.

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

Plus d'informations
il y a 2 semaines 6 jours - il y a 2 semaines 5 jours #30435 par garrigues
Réponse de garrigues sur le sujet aide pour corriger script AD
Oula je vais essayer de comprendre le fonctionnement de tout ce que tu m'a marqué .

Ma conaissance en powershell était limité à environ 6h lors de ma formation "gestionnaire systèmes et réseaux informatiques".

Je me suis lancé dedant en autodidacte (avec les quelques bases apprises) pour refaire l'exercice que l'on m'avait donné pour mon stage (suite au covid je me suis retrouvé avec un projet individuel).

Du coup un test pour moi se limitait à ce que je t'ai posté (et que l'on m'avait appris) mais quand je vois ce que tu m'a indiqué je m'aperçois que je ne sais clairement pas faire de vrai tests .

voici un exemple de ce que contient le fameux csv USERS que j'utilise sûrement mal du coup (si je me réferre à mes tests) pour la création des utilisateurs.
CN Martine LEROY
DistinguishedName CN=martineleroy,OU=direction,OU=entreprise-jacom,DC=domjacom,DC=local
Enable True
GivenName Martine
EmailAddress Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.
MailNickname m.leroy
UserName MartineLEROY
SamAccountName martineleroy
SurName LEROY
UserPrincipalName Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser. 
group gg-direction
groups gg-atelier
member CN=gg-direction,CN=gg-atelier,OU=groupes-securite,OU=entreprise-jacom,DC=domjacom,DC=local
path OU=direction,OU=entreprise-jacom,DC=domjacom,DC=local
groupes CN=martineleroy,CN=gg-direction,CN=gg-atelier,OU=direction,OU=entreprise-jacom,DC=domjacom,DC=local


Tu as là du coup toutes les colonnes et informations pour un utilisateur dont je dispose (il y a en gros les même informations pour les 32 autres) sauf pour certains ont 1 seul groupe et non 2 comme l'exemple ci-dessus.

Les 2 autres csv eux sont + simples , + courts et fonctionnel de coup.
Exemple pour les OU:

name administration
path ou=entreprise-jacom,dc=domjacom,dc=local


Et pour les groupes

name gg-atelier
path ou=groupes-securite,ou=entreprise-jacom,dc=domjacom,dc=local


Peut être que tu verrais des modifications à faire mais j'ai utilisé les csv donnés par mon ancien formateur qui nous disait que c'était sufisant (il nous avait fait un mini script dont je me suis inspiré au début du miens mais qui ne ressemble en rien à ce à quoi ressemble le script actuellement et qui ne fonctionnait plus ou très mal).

Du coup avec ton aide précieuse et je t'en remercie encore une fois mon script pourris va prendre + de lignes et sera plus ressemblant à un vrai script de pros ( on sent clairement l'amateurisme quand je vois les solutions que tu me propose et que je vais devoir bien étudier pour en comprendre le parfait fonctionnement ( il va peut-être me falloir 6 mois mais j'espère y arriver).

Je vais modifier les variables comme tu me dis avec les simple cote pour l'exportation future pour le fichier de "vérification".

En tout cas merci encore une fois, je vais passer ma soirée pour comprendre exactement le 1er bloc d'instruction "function" que tu m'as indiqué car je suppose qu'il faudra aussi le mettre pour les autres tests (création OU, groupes, et insertion des utilisateurs dans les groupes.

En d'autre termes je suis pas couché

Juste pour comprendre cette partie la on la répète 3 fois c'est normal?

$users=@(
New-UserInfos -Name 'user1' -GivenName 'user1Full' -Path 'path' -SamAccountName 'SamAccountName1' -UserPrincipalName 'User1PrincipalName' `
-EmailAddress 'Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.' -SurName 'User1SurName' -DisplayName 'user1MailNickname'

New-UserInfos -Name 'user2' -GivenName 'user2Full' -Path 'path' -SamAccountName 'SamAccountName2' -UserPrincipalName 'User2PrincipalName' `
-EmailAddress 'Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.' -SurName 'User2SurName' -DisplayName 'user2MailNickname'

New-UserInfos -Name 'user3' -GivenName 'user3Full' -Path 'path' -SamAccountName 'SamAccountName3' -UserPrincipalName 'User3PrincipalName' `
-EmailAddress 'Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.' -SurName 'User3SurName' -DisplayName 'user3MailNickname'
)

Je suppose que c'est pour la structure du fichier de log que l'on fait sa afin qu'il sache l'enchainement ou alors je n'ai rien compris sur cette partie là (ce qui fort probable ).

Du coup l'importation de mon csv ce fait juste apres cette partie avant le 1er foreach non? ou là encore je suis au fraises?

J'essaye de comprendre la logique, je pense que j'aurais bien aimer t'avoir en prof pour pouvoir poser les questions en direct (et tu a l'air bien + calé que le formateur que j'ai eu ).

Je vais testé de refaire cette structure pour les OU et les groupes en attendant les réponses a mes question qui me paraîssent stupides...

Bon j'ai adapté ton exemple pour la ROOT_OU qui est la 1ère étape du script, le code donne ceci

Import-Module ActiveDirectory

#couleurs messages
$MyForegroundColor=@("Green")
$MyForegroundColor1=@("Yellow")
$MyForegroundColor2=@("red")

#création de l'UO racine

$Domain = read-Host "non de votre domaine ex: DC=myDomain,DC=com"
$Root_OU = Read-Host "nom de votre OU racine"

Function New-RootOUInfos{
#New-PSCustomObjectFunction -Noun RootOUInfo -Parameters Name,path,ProtectedFromAccidentalDeletion -File
param(
        [Parameter(Mandatory=$True,position=0)]
    $Name,
        [Parameter(Mandatory=$True,position=1)]
    $path,
        [Parameter(Mandatory=$True,position=2)]
    $ProtectedFromAccidentalDeletion
        )

[pscustomobject]@{
    PSTypeName='RootOUInfo'; #Permet de typer un objet personnalisé
    Name=$ROOT_OU;
    Path=$domain;
    ProtectedFromAccidentalDeletion=$ProtectedFromAccidentalDeletion;
    }
}

$ROU=@(
    New-RootOUInfos -Name 'ROOT_OU' -Path 'path' -ProtectedFromAccidentalDeletion 'false' `
    )

foreach ($Root_OU in $ROUs)
{
    $Root_OU|
     Add-member -MemberType NoteProperty -Name isExist -Value $false -PassThru|
     Add-member -MemberType NoteProperty -Name isCreated -Value $false
}

foreach ($Root_OU in $ROUs)
{
    if ((Get-ADOrganizationalUnit -filter "name -like'*$($Root_OU)'"))
    {
       $Root_OU.IsExist=$True
       write-host -ForegroundColor $MyForegroundColor1 "l'organisation '$Root_OU' est deja presente dans l'AD"
    }
    else {
       New-ADOrganizationalUnit -Name $Root_OU -Path $Domain -ProtectedFromAccidentalDeletion $false
       $Root_OU.isCreated=$True
       write-host -ForegroundColor $MyForegroundColor "la creation de l'organisation '$Root_OU' a fonctionne correctement"
    }
}
$ROU


le résultat est le suivant:

ibb.co/k4NRgTh

sauf qu'il ne m'affiche plus du coup a l'écran les messages , est ce normal?,

je vais continuer pour les OU enfants, et les groupes
Dernière édition: il y a 2 semaines 5 jours par garrigues.

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

Plus d'informations
il y a 2 semaines 5 jours - il y a 2 semaines 5 jours #30438 par Laurent Dardenne
Salut,
>>Ma connaissance en powershell était limité à environ 6h
Il faut minimum 1 semaine.

>>Je me suis lancé dedans en autodidacte
C'est plus long.

>>je m'aperçois que je ne sais clairement pas faire de vrai tests
Chaque chose en son temps :-)

>>j'ai utilisé les csv donnés par mon ancien formateur qui nous disait que c'était suffisant
Bah en 6 heure faut se faciliter la vie et aller à l'essentiel, entre 'être capable de ' et comprendre cela ne demande pas la même durée.

>>on sent clairement l'amateurisme
Je connais des pro qui codent comme des gorets, donc amateur c'est pas mal !


>> le 1er bloc d'instruction "function" que tu m'as indiqué
Cela crée un jeu de test avec du remplissage, c'était juste pour proposer un code complet.

>>Juste pour comprendre cette partie la on la répète 3 fois c'est normal?
Oui, il y trois appel de fonction et chaque appel crée un objet différent, la syntaxe @() permet d'insérer plusieurs instructions afin de construire un tableau d'objet.
Le séparateur d'instruction est ici le retour chariot (sinon le point virgule) et le caractère ` permet de continuer l'instruction sur une autre ligne.
C'est une construction propre à Powershell.

>>Je suppose que c'est pour la structure du fichier de log
Pas vraiment, cela regroupe des informations, le cmdlet import-csv , à partir d'une ligne de texte structuré, créé un objet. Une linge du csv = 1 objet n ligne n objets.

>>Du coup l'importation de mon csv ce fait juste après cette partie
C'est une démo.

>>pouvoir poser les questions en direct
Tu as ce forum qui fera l'affaire.
>> + calé que le formateur que j'ai eu
On ne peut se faire un avis sur 6 heures ;-)

>>qui me paraissent stupides...
Faut bien commencer par le début.

>>j'ai adapté ton exemple pour la ROOT_OU qui est la 1ère étape du script, le code donne ceci
>>sauf qu'il ne m'affiche plus du coup a l'écran les messages , est ce normal?,
Voir ceci :

$ROU=@(
New-RootOUInfos -Name 'ROOT_OU' -Path 'path' -ProtectedFromAccidentalDeletion 'false' `
)

foreach ($Root_OU in $ROUs)...

la variable $Rous n'existe pas, Powershell est un langage dynamique et permissif.
Si la variable n'existe pas, pas de pb il continue.
foreach ($Root_OU in $ROUs) {'ok'}
#ras
Set-StrictMode -Version latest #Ceinture/bretelle/Para chute

foreach ($Root_OU in $ROUs) {'ok'}
#Impossible d’extraire la variable « $ROUs », car elle n’a pas été définie.

Tutoriels PowerShell
Dernière édition: il y a 2 semaines 5 jours par Laurent Dardenne.

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

Plus d'informations
il y a 2 semaines 5 jours - il y a 2 semaines 5 jours #30439 par garrigues
Réponse de garrigues sur le sujet aide pour corriger script AD
Rebonjour, bon j'avance un peu plus, quelques petits soucis de fautes dans les noms me rallentissent un peu mais je comprends mieux la decompostion d'un script , les fonctions , les vrai tests et ce grâce a ton aide.
Je t'en remercie encore une fois de plus (je pense te remercier encore quelques fois avant la fin de mon script )

Pour la partie "root_ou" c'était un peu spécial donc j'ai tenté un peu en improvisant car la "root_ou" est définie par l'utilisateur et non pas dans le fichier ,(j'ai pensé a tricher et la rajouter en 1er dans mon csv pour qu'elle se fasse en auto , mais comme c'est pas bien de tricher je l'ai pas fait .

Je l'ai donc définie avec une variable qui n'existe effectivement pas car de ce que j'ai compris un "foreach" a toujours 2 variables, un "for" tout court n'aurait pas été bon non plus car ce n'est pas le même fonctionnement (ou alors j'ai mal compris la boucle "for").

Je rectifie l'énorme bétise dite précédement car j'avais pas réfléchi comme il fallait:  root_ou est bien dans un endroit dont j'avais la variable puisqu'elle est a la racine du domaine, donc mes foreach sont devenus ceci:

foreach ($Root_OU in $Domain)

Je réédite car en faisant sa en fait le script le me créé plus la root_ou mais il créé le nom de domaine en tant que nouvelle root_ou.


il faut maintenant que je trouve comment indiquer a se foutu script que $domain n'est pas une ou mais bien le contrôleur de domaine (ce qu'il arrivait a reconnaître avant ...).

Du coup je suis entrain de bosser sur la partie groupe.

je pense du coup que le petit soucis d'exportation de resultat de ma "root_ou" doit venir de ma boucle car il me marque ceci dans le bloc texte récapitulatif:

@{Name=entreprise-jacom; Path=dc=domjacom,dc=local; ProtectedFromAccidentalDeletion=false}
True


alors que pour mes uo enfants la il me sort tout les résultats

@{name=administration; path=ou=entreprise-jacom,dc=domjacom,dc=local; isExist=True; isCreated=False}
True
@{name=commerce; path=ou=entreprise-jacom,dc=domjacom,dc=local; isExist=True; isCreated=False}
True
@{name=developpement; path=ou=entreprise-jacom,dc=domjacom,dc=local; isExist=True; isCreated=False}
True
@{name=direction; path=ou=entreprise-jacom,dc=domjacom,dc=local; isExist=True; isCreated=False}
True
@{name=expedition; path=ou=entreprise-jacom,dc=domjacom,dc=local; isExist=True; isCreated=False}
True
@{name=maintenance; path=ou=entreprise-jacom,dc=domjacom,dc=local; isExist=True; isCreated=False}
True
@{name=marketing; path=ou=entreprise-jacom,dc=domjacom,dc=local; isExist=True; isCreated=False}
True
@{name=production; path=ou=entreprise-jacom,dc=domjacom,dc=local; isExist=True; isCreated=False}
True
@{name=secretariat; path=ou=entreprise-jacom,dc=domjacom,dc=local; isExist=True; isCreated=False}
True
@{name=groupes-securite; path=ou=entreprise-jacom,dc=domjacom,dc=local; isExist=True; isCreated=False}


le isExist et isCreated sur la root_ou ne s'inscrit pas....

Je testerais tout a l'heure ce que tu m'a marqué.

Voici le résultat de la partie OU enfant

#creation OU enfant

$OUs=import-csv -path "C:\OU-AP.csv" -delimiter ";"   

Function New-OUInfos{
param(
        [Parameter(Mandatory=$True,position=0)]
    $Name,
        [Parameter(Mandatory=$True,position=1)]
    $path,
        [Parameter(Mandatory=$True,position=2)]
    $ProtectedFromAccidentalDeletion
        )

[pscustomobject]@{
    PSTypeName='OUInfos';
    Name=$ou.name;
    Path='$Root_OU','$Domain';
    ProtectedFromAccidentalDeletion=$ProtectedFromAccidentalDeletion;
    }
}

$OU=@(
    New-OUInfos -Name 'ou1' -Path 'path' -ProtectedFromAccidentalDeletion 'false' `

    New-OUInfos -Name 'ou2' -Path 'path' -ProtectedFromAccidentalDeletion 'false' `

    New-OUInfos -Name 'ou3' -Path 'path' -ProtectedFromAccidentalDeletion 'false' `
    )


foreach ($ou in $OUs)
{
    $ou|
     Add-member -MemberType NoteProperty -Name isExist -Value $false -PassThru|
     Add-member -MemberType NoteProperty -Name isCreated -Value $false
}

foreach($ou in $OUs){

    $parametersou=@{
    Name= $ou.name
    Path= $ou.path
    }

    if ((Get-ADOrganizationalUnit -filter "name -like'*$($ou.name)'"))
    {
      $OU1=  $ou.IsExist=$True
        write-host -ForegroundColor $MyForegroundColor1 "l'organisation '$ou' est deja presente dans l'AD"
    }

    else
    {
    New-ADOrganizationalUnit @parametersou -ProtectedFromAccidentalDeletion $false
   $OU2= $ou.isCreated=$True
    write-host -ForegroundColor $MyForegroundColor "la creation de l'unite d'organisation '$ou' a fonctionne correctement"
    }
$OU
add-Content -path "C:\resultatscript.txt" -value $OU1,$OU2,$OU
}
Dernière édition: il y a 2 semaines 5 jours par garrigues.

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

Plus d'informations
il y a 2 semaines 4 jours #30440 par Laurent Dardenne
Salut,
Le foreach à 2 variables effectivement une externe (un tableau d'objets) et une 'interne' (un objet du tableau en cours d'itération)

Pour ton pb de Domaine peut-être est-ce dû à ces erreurs ( notée #!!!) :
#création de l'UO racine

$Domain = read-Host "non de votre domaine ex: DC=myDomain,DC=com"
$Root_OU = Read-Host "nom de votre OU racine"

Function New-RootOUInfos{
#New-PSCustomObjectFunction -Noun RootOUInfo -Parameters Name,path,ProtectedFromAccidentalDeletion -File
param(
        [Parameter(Mandatory=$True,position=0)]
    $Name,
        [Parameter(Mandatory=$True,position=1)]
    $path,
        [Parameter(Mandatory=$True,position=2)]
    $ProtectedFromAccidentalDeletion
        )

 [pscustomobject]@{
    PSTypeName='RootOUInfo'; 
    Name=$ROOT_OU; #!!! Utilise le paramètre $name
    Path=$domain;
    ProtectedFromAccidentalDeletion=$ProtectedFromAccidentalDeletion;
 }
}

$ROU=@(
    #!!! Utilise la variable $Root_OU
    New-RootOUInfos -Name 'ROOT_OU' -Path 'path' -ProtectedFromAccidentalDeletion 'false' `
)

foreach ($Root_OU in $ROUs) #!!! tu écrases ta saisie dans $Root_OU
{
    $Root_OU|
     Add-member -MemberType NoteProperty -Name isExist -Value $false -PassThru|
     Add-member -MemberType NoteProperty -Name isCreated -Value $false
}
pour ceci :
$OU2= $ou.isCreated=$True
C'est une affectation multiple, $ou2 vaut true :
$a=$b=-1
$a;$b

Prête attention à tes noms de variable, $Ou, $Ou1 etc,ça commence mal :-)

Tutoriels PowerShell

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

Plus d'informations
il y a 2 semaines 4 jours - il y a 2 semaines 4 jours #30441 par garrigues
Réponse de garrigues sur le sujet aide pour corriger script AD
Bon la je suis entrain de devenir fou a force, je ne comprend rien a ce qu'il se passe.

Quand j'adapte les tests sur le papier comme je l'ai dit dans mon précédent message j'ai bien une variable qui est $domaine qui correspond à la racine du domaine là ou doit se créér ma Root_OU.

J'ai donc fait ceci::

#Chargement des modules active directory
Import-Module ActiveDirectory

#couleurs messages
$MyForegroundColor=@("Green")
$MyForegroundColor1=@("Yellow")
$MyForegroundColor2=@("red")

#création de l'UO racine

$Domain = "DC=domjacom,DC=local"
$Root_OU = Read-Host "nom de votre OU racine"

Function New-RootOUInfos{
#New-PSCustomObjectFunction -Noun RootOUInfo -Parameters Name,path,ProtectedFromAccidentalDeletion -File
param(
        [Parameter(Mandatory=$True,position=0)]
    $Name,
        [Parameter(Mandatory=$True,position=1)]
    $path,
        [Parameter(Mandatory=$True,position=2)]
    $ProtectedFromAccidentalDeletion
        )

[pscustomobject]@{
    PSTypeName='RootOUInfo'; #Permet de typer un objet personnalisé
    Name=$ROOT_OU;
    Path='$Domain';
    ProtectedFromAccidentalDeletion=$ProtectedFromAccidentalDeletion;
    }
}

$ROU=@(
    New-RootOUInfos -Name 'root_ou1' -Path 'path' -ProtectedFromAccidentalDeletion 'false'
    )

foreach ($Root_OU in $Domain)

{
    $Root_OU|
     Add-member -MemberType NoteProperty -Name isExist -Value $false -PassThru|
     Add-member -MemberType NoteProperty -Name isCreated -Value $false
}

foreach ($Root_OU in $Domain)
{
    $parametersroot_ou=@{
    Name= $Root_OU
    Path= '$Domain'
    }
    if ((Get-ADOrganizationalUnit -filter "name -like'*$($Root_OU)'"))
    {
      $ROU1=  $Root_OU.IsExist=$True
      write-host -ForegroundColor $MyForegroundColor1 "l'organisation '$Root_OU' est deja presente dans l'AD"
    }
    else {
       New-ADOrganizationalUnit @parametersroot_ou -ProtectedFromAccidentalDeletion $false
      $ROU2=  $Root_OU.isCreated=$True
      write-host -ForegroundColor $MyForegroundColor "la creation de l'organisation '$Root_OU' a fonctionne correctement"
    }
$ROU
add-Content -path "C:\resultatscript.txt" -value $ROU1,$ROU2,$ROU
}


sauf qu'il ne me créé jamais la Root_OU mais systématiquement une OU avec le nom du domaine

New-ADOrganizationalUnit : La syntaxe du nom de l’objet est incorrecte
Au caractère Ligne:61 : 8
+        New-ADOrganizationalUnit @parametersroot_ou -ProtectedFromAcci ...
+        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (OU=DC\=domjacom\,DC\=local,$Domain:String) [New-ADOr
   ganizationalUnit], ADException
    + FullyQualifiedErrorId : ActiveDirectoryServer:8335,Microsoft.ActiveDirectory.Management.Com
   mands.NewADOrganizationalUnit
 
La propriété «isCreated» est introuvable dans cet objet. Vérifiez qu’elle existe et qu’elle peut
être définie.
Au caractère Ligne:62 : 15
+       $ROU2=  $Root_OU.isCreated=$True
+               ~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation : (:) , RuntimeException
    + FullyQualifiedErrorId : PropertyAssignmentException
 
la creation de l'organisation 'DC=domjacom,DC=local' a fonctionne correctement


alors qu'avec ma 1ère méthode qui était:

#Chargement des modules active directory
Import-Module ActiveDirectory

$MyForegroundColor=@("Green")
$MyForegroundColor1=@("Yellow")
$MyForegroundColor2=@("red")

#création de l'UO racine

$Domain = read-Host "non de votre domaine ex: DC=myDomain,DC=com"
$Root_OU = Read-Host "nom de votre OU racine"

    if ((Get-ADOrganizationalUnit -filter "name -like'*$($Root_OU)'")){
       write-host -ForegroundColor $MyForegroundColor1 "l'organisation $Root_OU est deja presente dans l'AD"
    }

    else {
       New-ADOrganizationalUnit -Name $Root_OU -Path $Domain -ProtectedFromAccidentalDeletion $false
       write-host -ForegroundColor $MyForegroundColor "la creation de l'organisation $Root_OU a fonctionne correctement"
    }


résultat:

non de votre domaine ex: DC=myDomain,DC=com : dc=domjacom,dc=local
nom de votre OU racine : jacomo
la creation de l'organisation jacomo a fonctionne correctement


J'ai cherché des heures sur internet pour voir comment spécifier que $Domaine etait le contrôleur de domaine mais rien a faire alors qu'avec la méthode 2 le script reconnaît qu'il s'agit du contrôleur de domaine et m'intègre bien la Root_Ou a l'intérieur.

Si quelqu'un a une idée je suis preneur car jusque là je n'arrive pas a avancer sur cette partie (ou alors il faut que je "triche en intégrant ma Root_OU dans mon csv en 1er et que tout se fasse en même temp avec la partie 2 du script...

Merci d'avance pour les suggestions ou idées que vous pourrez me donner pour avancer sur ce soucis

Vu que la 1ère partie foirait avec les vrais tests j'ai repris ce que j'avais fait au début en modifiant un peu pour avoir un équivalant de log

#Chargement des modules active directory
Import-Module ActiveDirectory

$MyForegroundColor=@("Green")
$MyForegroundColor1=@("Yellow")
$MyForegroundColor2=@("red")

#création de l'UO racine

$Domain = 'DC=Domjacom,DC=local'
$Root_OU = Read-Host "nom de votre OU racine"

$ROU1= "l'organisation $Root_OU est deja presente dans l'AD"
$ROU2= "la creation de l'organisation $Root_OU a fonctionne correctement"

   if ((Get-ADOrganizationalUnit -filter "name -like'*$($Root_OU)'"))
    {
       write-host -ForegroundColor $MyForegroundColor1 $ROU1
       add-Content -path "C:\resultatscript.txt" -value "OU=$Root_OU,$Domain exist=true"
    }

    else
   {
       New-ADOrganizationalUnit -Name $Root_OU -Path $Domain -ProtectedFromAccidentalDeletion $false
       write-host -ForegroundColor $MyForegroundColor $ROU2
       add-Content -path "C:\resultatscript.txt" -value "OU=$Root_OU,$Domain created=true"
    }


la sortie dans mon fichier texte donne donc ceci:

OU=test6,DC=Domjacom,DC=local created=true

ou quand on essaye de la recréér:

OU=test6,DC=Domjacom,DC=local exist=true

 
Dernière édition: il y a 2 semaines 4 jours par garrigues.

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

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