Question
[Résolu] Script Active Directory - portée variable
- Ruggi
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 3
- Remerciements reçus 0
il y a 6 ans 11 mois #28646
par Ruggi
[Résolu] Script Active Directory - portée variable a été créé 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
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
Pièces jointes :
Connexion ou Créer un compte pour participer à la conversation.
- Sinjk
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 99
- Remerciements reçus 0
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
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.
- Ruggi
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 3
- Remerciements reçus 0
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
Je suis désolé, c'est ma première fois
Connexion ou Créer un compte pour participer à la conversation.
- Sinjk
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 99
- Remerciements reçus 0
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 \"etc\"[/code:1]
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 \"etc\"[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
- Ruggi
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 3
- Remerciements reçus 0
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
Mon script fonctionne
Merci Beaucoup Sinjk
Connexion ou Créer un compte pour participer à la conversation.
- Sinjk
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 99
- Remerciements reçus 0
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
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
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- [Résolu] Script Active Directory - portée variable