Question [Résolu] Script Active Directory - portée variable

Plus d'informations
il y a 6 ans 11 mois #28646 par Ruggi
Bonjour,

Je fais actuellement un script active directory.

Je me heurte à un problème :
Je ne parviens pas à récupérer le résultat d'une de mes variables.

[code:1]function ChoixOU #permet de choisir une OU existante
{

$OuTrouvé = Get-ADOrganizationalUnit -filter * -SearchBase \"dc=$NomDomaine,dc=$Tld\"
foreach ($LigneOu in $OuTrouvé)
{
Write-Host $LigneOu.name
}
$NomOu = Read-Host \"Sélectionnez une OU\"
}[/code:1]

c'est la variable $NomOu qui me pose problème lorsque je l'intègre dans d'autre fonction elle n'est pas prise en compte comme si powershell ne voulait pas enregistré le résultat de la commande read-host.

cette fonction est intégré dans une boucle do while avec un switch qui me sert de menu.
j'ai mis le script entier à la fin

Si quelqu'un pouvait m'aider je lui en serai reconnaissant.

Merci par avance pour vos réponses

[code:1]$NomDomaine = Read-Host \"Entrez le nom de domaine (domaine.tld)\" # Entrer votre nom de domaine sans le tld
$Tld = Read-Host \"Entrez le Tld (domaine.tld)\" # Entrer le TLD sans le domaine

function ChoixOU #permet de choisir une OU existante
{

$OuTrouvé = Get-ADOrganizationalUnit -filter * -SearchBase \"dc=$NomDomaine,dc=$Tld\"
foreach ($LigneOu in $OuTrouvé)
{
Write-Host $LigneOu.name
}
$NomOu = Read-Host \"Sélectionnez une OU\"
}

function CreatOu #création d'ou
{

Set-Location \"AD:\dc=$NomDomaine,dc=$Tld\"
$NomNewOu = Read-Host \"Entrez le nom de l'OU que vous souhaitez créer\"
New-ADOrganizationalUnit -name $NomNewOu
}

#fonction qui crée des utilisateurs manuellement
function CreationUtilisateurManuelle
{
Set-Location \"AD:\OU=$NomOu,dc=$NomDomaine,dc=$Tld \"
$GivenName = Read-Host \"Entrez le prénom\"
$Surname = Read-Host \"Entrez le nom \"
$pwd = Read-Host \"Entrez le mot de passe\"
$pwd = ConvertTo-SecureString $pwd -AsPlainText -force #sécurise le mot de passe
$Name = $GivenName+\" \"+$Surname
$SAMA = $GivenName[0]+\".\"+$Surname
$UPN = $GivenName[0]+\".\"+$Surname



#création de l'utilisateur
New-ADUser $Name -Surname $Surname -GivenName $GivenName -SamAccountName $SAMA -UserPrincipalName $UPN -AccountPassword $pwd -CannotChangePassword $false
Enable-ADAccount -Identity $SAMA
}

#fonction qui crée des utilisateurs automatiquement à partir de fichier c:\script\importuser.csv
Function CreationUtilisateurAuto
{
$CheminFichier = Read-Host \"Entrez le chemin du fichier\"
$password = Read-Host \"Entrez le mot de passe par défault\"
$password = ConvertTo-SecureString $password -AsPlainText -Force

Set-Location \"AD:\ou= $NomOu ,dc=$NomDomaine,dc=$Tld\" #indique ou créer les utilisateur

#créer les utilisateur
Import-Csv $CheminFichier -Delimiter \";\" | New-ADUser -enable $true -AccountPassword $password -CannotChangePassword $false -ChangePasswordAtLogon $true -PasswordNeverExpires $false


}

#fonction qui créer des groupe manuellement
function CreationGroupeManuelle
{

$Name = Read-Host \"Comment voulez-vous appeler le groupe?\"
$DisplayName =\"GG_\"+$Name
$GroupCategory = \"Security\"
$GroupScope = \"Global\"


Set-Location \"ad:\ou=$NomOu,dc=$NomDomaine,dc=$Tld\"
New-ADGroup $Name -DisplayName $DisplayName -GroupCategory $GroupCategory -GroupScope $GroupScope


}

#fonction qui crée des groupe automatiquement à partir de fichier c:\script\importgroupe.csv
function CreationGroupeAuto
{
$CheminCsvGrp = Read-Host \"Entrez le chmin du fichier csv\"
Set-Location \"AD:\ou=$NomOu,DC=$NomDomaine,DC=$Tld\"
$MesGroupes = Import-Csv $CheminCsvGrp

foreach($ligne in $MesGroupes)
{
$DisplayNameAuto = \"GG_\"+$ligne.name
New-ADGroup $ligne.name -DisplayName $DisplayNameAuto -GroupCategory Security -GroupScope Global
}

}

#fonction qui permet d'afficher les groupes présent dans ad
function AfficherLesGroupes
{
$GroupeTrouvé = Get-ADGroup -filter * -SearchBase \"ou=$NomOu,dc=$NomDomaine,dc=$Tld\"
foreach ($lignegr in $GroupeTrouvé)
{
Write-Host $lignegr.SamAccountName
}
}

#fonction qui permet d'afficher les utilisateurs présent dans ad:\ou=test,dc=overcore,dc=local
function AfficherLesUtilisateurs
{
$UtilisateursTrouvé = Get-ADUser -filter * -SearchBase \"ou=$NomOu,dc=$NomDomaine,dc=$Tld\"
foreach ($ligneut in $UtilisateursTrouvé)
{
Write-Host $ligneut.SamAccountName
}
}

#fonction qui permet d'ajouoter un membre à un groupe et de créer des utilisateurs et des groupes aux besoin
function AjouterMembreGroupes
{
do
{
AfficherLesGroupes
$QuelGroupes = Read-Host \"Dans quel groupes voulez-vous ajouter un membre ? `nTapez le nom du groupe ou <creer> si le groupe n'éxiste pas\"

if($QuelGroupes -eq \"creer\"«»)
{
do
{
$CreaGR = Read-Host \"Voulez-vous créer un groupe automatiquement ou manuellement ? `n1: Création auto `n2: Création manuelle `nVotrechoix\"
switch ($CreaGR)
{
1{
CreationGroupeAuto
}

2{
CreationGroupeManuelle
}
}

$contcreer = Read-Host \"continuer à créer des groupes ? O/N\"
}
while ($contcreer -eq \"O\"«»)
}
else
{
AfficherLesUtilisateurs
$ChUti = Read-Host \"quel utilisateur ajouter ? `nTapez le nom de l'utilisateur ou <creer> si l'utilisateur n'existe pas\"
if ($ChUti -eq \"creer\"«»)
{
do
{
$CreaUt = Read-Host \"Voulez-vous créer un utilisateur automatiquement ou manuellement ? `n1: Création auto `n2: Création manuellement `nVotre choix\"
switch($CreaUt)
{
1{
CreationUtilisateurAuto
}

2{
CreationUtilisateurManuelle
}
}

$ConCreerUtil = Read-Host \"Voulez-vous continuer à créer des utilisateur? O/N\"
}
while ($ConCreerUtil -eq \"O\"«»)
}
else
{
Add-ADGroupMember -Identity $QuelGroupes -Members $ChUti
}

}
$ConAjMen = Read-Host \"Continuer à ajouter des membres au groupes? O/N\"
}
while ($ConAjMen -eq \"O\"«»)
}

do
{
$Quefaire = Read-Host \" Selectionnez une Ou en premier lieu`n1: Selectionner une OU éxistante `n2: Créer une OU`n3: Créer des utilisateurs manuellement `n4: Créer des utilisateurs à partir d'un fichier csv `n5: Créer des groupes manuellement `n6: Créer des groupes à partir d'un fichier csv `n7: Ajouter un membre dans un groupe`nQue voules-vous faire ?\"

Switch ($Quefaire)
{
1{
ChoixOU
}
2{
CreatOu
}
3{
CreationUtilisateurManuelle
}
4{
CreationUtilisateurAuto
}
5{
CreationGroupeManuelle
}
6{
CreationGroupeAuto
}
7{
AjouterMembreGroupes
}
}
$MenuPrincipal = read-host \"Revenir au menu principale ? O/N\"
}
while ($MenuPrincipal -eq \"O\"«»)[/code:1]

Message édité par: maargan, à: 4/04/19 08:38

Message édité par: maargan, à: 4/04/19 08:39

Message édité par: maargan, à: 4/04/19 08:45<br><br>Message édité par: Arnaud, à: 4/04/19 15:28

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

Plus d'informations
il y a 6 ans 11 mois #28648 par Sinjk
Réponse de Sinjk sur le sujet Re:script active directory
Salut Maargan,

Dans un premier temps, dans un soucis de lisibilité serait-il possible que tu mettes ton code entre les balises code s'il te plaît ? :)

Bon courage

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

Plus d'informations
il y a 6 ans 11 mois #28650 par Ruggi
Réponse de Ruggi sur le sujet Re:script active directory
voilà c'est fait.
Je suis désolé, c'est ma première fois :blush:

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

Plus d'informations
il y a 6 ans 11 mois #28652 par Sinjk
Réponse de Sinjk sur le sujet Re:script active directory
Pas de soucis c'est mieux :)

Si je dis pas de bêtises, ta variable ne sort pas du scope de la function.

essaye en ajoutant $Global: devant ta variable:
[code:1]$Global:NomOu = Read-host \&quot;etc\&quot;[/code:1]

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

Plus d'informations
il y a 6 ans 11 mois #28660 par Ruggi
Réponse de Ruggi sur le sujet Re:script active directory
Merci c'est exactement ce qu'il me fallait.

Mon script fonctionne

Merci Beaucoup Sinjk

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

Plus d'informations
il y a 6 ans 11 mois #28664 par Sinjk
Réponse de Sinjk sur le sujet Re:script active directory
Pas de soucis !
Content que tout roule maintenant :)

Bon courage

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

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