Question
Manipulations de GPO
- Grégory
- Auteur du sujet
- Hors Ligne
- Membre senior
Réduire
Plus d'informations
- Messages : 49
- Remerciements reçus 0
il y a 15 ans 5 mois #3106
par Grégory
Réponse de Grégory sur le sujet Re:Manipulations de GPO
Ayant eu besoin de la liste des OU pour mon script qui permet de lier des GPO à des OU
je vous fait profiter du script qui permet de les lister
[code:1]
$ldapQuery = \"(&(objectCategory=organizationalunit))\"
$de = new-object system.directoryservices.directoryentry
$ads = new-object system.directoryservices.directorysearcher -argumentlist $de,$ldapQuery
$complist = $ads.findall()
$complist |foreach{$_.properties.name}
[/code:1]
je vous fait profiter du script qui permet de les lister
[code:1]
$ldapQuery = \"(&(objectCategory=organizationalunit))\"
$de = new-object system.directoryservices.directoryentry
$ads = new-object system.directoryservices.directorysearcher -argumentlist $de,$ldapQuery
$complist = $ads.findall()
$complist |foreach{$_.properties.name}
[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
- Grégory
- Auteur du sujet
- Hors Ligne
- Membre senior
Réduire
Plus d'informations
- Messages : 49
- Remerciements reçus 0
il y a 15 ans 5 mois #3257
par Grégory
Réponse de Grégory sur le sujet Re:Manipulations de GPO
Bon je me suis remis dans les GPO
Voici le script qui permet de lister les OU et les GPO qui sont liées et de lier une GPO à une OU
Je suis désolé j'ai pas encore commenté mais j'éditerai pour le faire
j'ai vu qu'on pouvait faire encore pas mal de chose(appliquer, supprimer,...) je verrais ça plus tard (si je peux vu que je viens d'être \"remercié\" de ma boite)
Edit : voilà le code commenté et j'ai corrigé qq erreurs (boucle et initialisation des variables)
[code:1]#ce script permet de lister les GPO et les OU auxquelles elles sont liées
#ce script permet aussi de lier une GPO à une OU
#le paramètre d'entrée est le nom de domaine
#lancement : .\get-gpolinks.ps1 domain.local
param ($domainName = \".\"«»)
$CrLF=\"`r`n\"
do{
$lst=\"\"
$var=\"\"
#On récupère la liste des GPO du domaine
$gpm = New-Object -ComObject GPMgmt.GPM
$gpmConstants = $gpm.GetConstants()
$gpmDomain = $gpm.GetDomain($domainName, \"\", $gpmConstants.UseAnyDC)
$gpmSearchCriteria = $gpm.CreateSearchCriteria()
$gpmAllGposInDomain = $gpmDomain.SearchGPOs($gpmSearchCriteria)
clear
write-host \"Liste des GPO et des OU auxquelles elles sont liées:\"
write-host \"\"
#On récupère les OU et les GPO liées
$gpmAllGposInDomain|foreach{
$gpmSearchCriteria = $gpm.CreateSearchCriteria()
$gpmSearchCriteria.Add($gpmConstants.SearchPropertySOMLinks, $gpmConstants.SearchOpContains, $_)
$gpmSomList = $gpmDomain.SearchSOMs($gpmSearchCriteria)
if ($gpmSomList.Count -ne 0)
{
write-host $_.displayname\":\"
$gpmsomlist|foreach{write-host \"-\"$_.name}
write-host \"\"
}
else
{
$var+=$_.displayname + $crlf
}
}
write-host ($crlf*2)
write-host \"Liste des GPO non liées:\"
write-host \"\"
$var
write-host ($CrLf)
write-host (\"_\" * 80)
write-host ($CrLf)
do{
$rep=read-host \"Voulez-vous lier une GPO ? [o/n]\"
}until ($rep -eq \"o\" -or $rep -eq \"n\"«»)
write-host \"\"
if($rep -eq \"o\"«»)
{
do{
$namegpo=read-host \"Entrez le nom de la GPO \"
$namegpo2=$gpmAllGposInDomain|where{$_.displayname -eq $namegpo}
write-host ($CrLf)
}
until ($namegpo -eq $namegpo2.displayname)
#On affiche la liste de OU du domaine
$ldapQuery = \"(&(objectCategory=organizationalunit))\"
$de = new-object system.directoryservices.directoryentry
$ads = new-object system.directoryservices.directorysearcher -argumentlist $de,$ldapQuery
$complist = $ads.findall()
$lstou=$complist |foreach{$_.properties.name}
write-host \"Liste des OU :\"
$lstou
write-host ($CrLf)
do{
$nameou=read-host \"Entrez le nom de l'OU où vous voulez lier votre GPO \"
$nameou2=$lstou|where{$_ -eq $nameou}
write-host ($CrLf)
}
until ($nameou -eq $nameou2)
#on récupère le nom de domaine pour le mettre dans le chemin LDAP
$lst=$gpmDomain.domain.split(\".\"«»)
$dom=$lst[0]
$ext=$lst[1]
$pathou=\"ldap://ou=\" + $nameou + \",DC=\" + $dom + \",dc=\" + $ext
#on récupère l'OU
$ouid=$complist|where{$_.path -eq $pathou}
$oulnk=$gpmdomain.getsom($ouid.path)
#on récupère la GPO à lier
$gpo=$gpmAllGposInDomain|where{$_.displayname -eq $namegpo}
#On crée le lien
$oulnk.creategpolink(1,$gpo)
do{
$end=read-host \"Voulez-vous lier d'autres GPO ? [o/n]\"
}until ($end -eq \"o\" -or $end -eq \"n\"«»)
}
}until($end -eq \"n\" -or $rep -eq \"n\"«»)
[/code:1]<br><br>Message édité par: Nostra, à: 19/11/08 09:34
Voici le script qui permet de lister les OU et les GPO qui sont liées et de lier une GPO à une OU
Je suis désolé j'ai pas encore commenté mais j'éditerai pour le faire
j'ai vu qu'on pouvait faire encore pas mal de chose(appliquer, supprimer,...) je verrais ça plus tard (si je peux vu que je viens d'être \"remercié\" de ma boite)
Edit : voilà le code commenté et j'ai corrigé qq erreurs (boucle et initialisation des variables)
[code:1]#ce script permet de lister les GPO et les OU auxquelles elles sont liées
#ce script permet aussi de lier une GPO à une OU
#le paramètre d'entrée est le nom de domaine
#lancement : .\get-gpolinks.ps1 domain.local
param ($domainName = \".\"«»)
$CrLF=\"`r`n\"
do{
$lst=\"\"
$var=\"\"
#On récupère la liste des GPO du domaine
$gpm = New-Object -ComObject GPMgmt.GPM
$gpmConstants = $gpm.GetConstants()
$gpmDomain = $gpm.GetDomain($domainName, \"\", $gpmConstants.UseAnyDC)
$gpmSearchCriteria = $gpm.CreateSearchCriteria()
$gpmAllGposInDomain = $gpmDomain.SearchGPOs($gpmSearchCriteria)
clear
write-host \"Liste des GPO et des OU auxquelles elles sont liées:\"
write-host \"\"
#On récupère les OU et les GPO liées
$gpmAllGposInDomain|foreach{
$gpmSearchCriteria = $gpm.CreateSearchCriteria()
$gpmSearchCriteria.Add($gpmConstants.SearchPropertySOMLinks, $gpmConstants.SearchOpContains, $_)
$gpmSomList = $gpmDomain.SearchSOMs($gpmSearchCriteria)
if ($gpmSomList.Count -ne 0)
{
write-host $_.displayname\":\"
$gpmsomlist|foreach{write-host \"-\"$_.name}
write-host \"\"
}
else
{
$var+=$_.displayname + $crlf
}
}
write-host ($crlf*2)
write-host \"Liste des GPO non liées:\"
write-host \"\"
$var
write-host ($CrLf)
write-host (\"_\" * 80)
write-host ($CrLf)
do{
$rep=read-host \"Voulez-vous lier une GPO ? [o/n]\"
}until ($rep -eq \"o\" -or $rep -eq \"n\"«»)
write-host \"\"
if($rep -eq \"o\"«»)
{
do{
$namegpo=read-host \"Entrez le nom de la GPO \"
$namegpo2=$gpmAllGposInDomain|where{$_.displayname -eq $namegpo}
write-host ($CrLf)
}
until ($namegpo -eq $namegpo2.displayname)
#On affiche la liste de OU du domaine
$ldapQuery = \"(&(objectCategory=organizationalunit))\"
$de = new-object system.directoryservices.directoryentry
$ads = new-object system.directoryservices.directorysearcher -argumentlist $de,$ldapQuery
$complist = $ads.findall()
$lstou=$complist |foreach{$_.properties.name}
write-host \"Liste des OU :\"
$lstou
write-host ($CrLf)
do{
$nameou=read-host \"Entrez le nom de l'OU où vous voulez lier votre GPO \"
$nameou2=$lstou|where{$_ -eq $nameou}
write-host ($CrLf)
}
until ($nameou -eq $nameou2)
#on récupère le nom de domaine pour le mettre dans le chemin LDAP
$lst=$gpmDomain.domain.split(\".\"«»)
$dom=$lst[0]
$ext=$lst[1]
$pathou=\"ldap://ou=\" + $nameou + \",DC=\" + $dom + \",dc=\" + $ext
#on récupère l'OU
$ouid=$complist|where{$_.path -eq $pathou}
$oulnk=$gpmdomain.getsom($ouid.path)
#on récupère la GPO à lier
$gpo=$gpmAllGposInDomain|where{$_.displayname -eq $namegpo}
#On crée le lien
$oulnk.creategpolink(1,$gpo)
do{
$end=read-host \"Voulez-vous lier d'autres GPO ? [o/n]\"
}until ($end -eq \"o\" -or $end -eq \"n\"«»)
}
}until($end -eq \"n\" -or $rep -eq \"n\"«»)
[/code:1]<br><br>Message édité par: Nostra, à: 19/11/08 09:34
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.068 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- Manipulations de GPO