Question Manipulation 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 #3267
par Grégory
Manipulation de GPO a été créé par Grégory
Bon je vais mettre mes scripts sur les GPO dans cette partie
Je remercie Laurent (et les autres) pour leur aide très précieuse
Le premier qui affiche les GPO actives/inactives (complète ou partielles) puis permet d'activer/désactiver les GPO
[code:1]#Ce script permet de lister toutes les GPO du domaine et affiche celles inactives (partielles ou complètes)
#Ensuite on peut ou non activer/désactiver les GPO
#le paramètre d'entrée est le nom de domaine
#lancement : .\get-gpodis.ps1 domain.local
param ($Domainname = \".\"«»)
$CrLF=\"`r`n\"
#On récupère les GPO
$gpm = New-Object -ComObject GPMgmt.GPM
$gpmConstants = $gpm.GetConstants()
$gpmDomain =$gpm.GetDomain($Domainname, “”, $gpmConstants.UseAnyDC)
$gpmSearchCriteria = $gpm.CreateSearchCriteria()
$gpmAllGpos = $gpmDomain.SearchGPOs($gpmSearchCriteria)
do{
clear
#On affiche les GPO du domaines
write-host \"Liste de toutes les GPO du domaine : \"
write-host ($CrLf)
$gpmallgpos|foreach{$_.displayname}
write-host ($CrLf*2)
#On affiche les GPO inactives
write-host \"GPO inactives ou partiellement inactives : \"
write-host ($CrLf)
$gpmAllGpos|foreach{
$msg=\"\"
if ($_.isUserEnabled() -eq $true -and $_.iscomputerenabled() -eq $false)
{$Msg =\"est partiellement inactive : configuration ordinateur inactive\" }
elseif ($_.isUserEnabled() -eq $false -and $_.iscomputerenabled() -eq $true)
{$MSg=\"est partiellement inactive : configuration utilisateur inactive\" }
elseif($_.isUserEnabled() -eq $false -and $_.iscomputerenabled() -eq $false)
{ $Msg =\"est totalement inactive\" }
if ($msg -ne \"\"«»)
{write-host $_.displayname $Msg}
}
write-host ($CrLf*2)
write-host (\"_\" * 80)
write-host ($CrLf)
do{
$rep=read-host \"Voulez-vous modifier les paramètres d'activations d'une des GPO ? [o/n]\"
}
until ($rep -eq \"o\" -or $rep -eq \"n\"«»)
if($rep -eq \"o\"«»){
do{
write-host ($CrLf)
$namegpo=read-host \"Entrez le nom de la GPO que vous voulez modifier \"
$namegpo2=$gpmAllGpos|where{$_.displayname -eq $namegpo}
}
until ($namegpo -eq $namegpo2.displayname)
do{
write-host ($CrLf)
write-host \"Voulez-vous :\"
write-host \"1 : Activer la GPO\"
write-host \"2 : Désactiver la GPO\"
$rep1=read-host
write-host ($CrLf)
}
until ($rep1 -eq \"1\" -or $rep1 -eq \"2\"«»)
if($rep1 -eq \"1\"«»)
{$var= \"Activer\";$Value=$True}
else
{$var=\"Désactiver\";$Value=$False}
do{
write-host ($CrLf)
write-host \"Voulez-vous :\"
write-host \"1 : $var complètement la GPO\"
write-host \"2 : $var la configuration ordinateur de la GPO\"
write-host \"3 : $var la configuration utilisateur de la GPO\"
$rep=read-host
}
until ($rep -eq \"1\" -or $rep -eq \"2\" -or $rep -eq \"3\"«»)
switch($rep){
1 {$namegpo2.setuserenabled($value);$namegpo2.setcomputerenabled($value)}
2 {$namegpo2.setcomputerenabled($value)}
3 {$namegpo2.setuserenabled($value)}
}
write-host ($CrLf)
write-host \"Configuration GPO modifiée\"}
do{
write-host ($CrLf)
$rep=read-host \"Voulez-vous quitter le script ? [o/n]\"
}
until ($rep -eq \"o\" -or $rep -eq \"n\"«»)
}
until ($rep -eq \"o\"«»)[/code:1]
<br><br>Message édité par: Nostra, à: 19/11/08 09:49
Je remercie Laurent (et les autres) pour leur aide très précieuse
Le premier qui affiche les GPO actives/inactives (complète ou partielles) puis permet d'activer/désactiver les GPO
[code:1]#Ce script permet de lister toutes les GPO du domaine et affiche celles inactives (partielles ou complètes)
#Ensuite on peut ou non activer/désactiver les GPO
#le paramètre d'entrée est le nom de domaine
#lancement : .\get-gpodis.ps1 domain.local
param ($Domainname = \".\"«»)
$CrLF=\"`r`n\"
#On récupère les GPO
$gpm = New-Object -ComObject GPMgmt.GPM
$gpmConstants = $gpm.GetConstants()
$gpmDomain =$gpm.GetDomain($Domainname, “”, $gpmConstants.UseAnyDC)
$gpmSearchCriteria = $gpm.CreateSearchCriteria()
$gpmAllGpos = $gpmDomain.SearchGPOs($gpmSearchCriteria)
do{
clear
#On affiche les GPO du domaines
write-host \"Liste de toutes les GPO du domaine : \"
write-host ($CrLf)
$gpmallgpos|foreach{$_.displayname}
write-host ($CrLf*2)
#On affiche les GPO inactives
write-host \"GPO inactives ou partiellement inactives : \"
write-host ($CrLf)
$gpmAllGpos|foreach{
$msg=\"\"
if ($_.isUserEnabled() -eq $true -and $_.iscomputerenabled() -eq $false)
{$Msg =\"est partiellement inactive : configuration ordinateur inactive\" }
elseif ($_.isUserEnabled() -eq $false -and $_.iscomputerenabled() -eq $true)
{$MSg=\"est partiellement inactive : configuration utilisateur inactive\" }
elseif($_.isUserEnabled() -eq $false -and $_.iscomputerenabled() -eq $false)
{ $Msg =\"est totalement inactive\" }
if ($msg -ne \"\"«»)
{write-host $_.displayname $Msg}
}
write-host ($CrLf*2)
write-host (\"_\" * 80)
write-host ($CrLf)
do{
$rep=read-host \"Voulez-vous modifier les paramètres d'activations d'une des GPO ? [o/n]\"
}
until ($rep -eq \"o\" -or $rep -eq \"n\"«»)
if($rep -eq \"o\"«»){
do{
write-host ($CrLf)
$namegpo=read-host \"Entrez le nom de la GPO que vous voulez modifier \"
$namegpo2=$gpmAllGpos|where{$_.displayname -eq $namegpo}
}
until ($namegpo -eq $namegpo2.displayname)
do{
write-host ($CrLf)
write-host \"Voulez-vous :\"
write-host \"1 : Activer la GPO\"
write-host \"2 : Désactiver la GPO\"
$rep1=read-host
write-host ($CrLf)
}
until ($rep1 -eq \"1\" -or $rep1 -eq \"2\"«»)
if($rep1 -eq \"1\"«»)
{$var= \"Activer\";$Value=$True}
else
{$var=\"Désactiver\";$Value=$False}
do{
write-host ($CrLf)
write-host \"Voulez-vous :\"
write-host \"1 : $var complètement la GPO\"
write-host \"2 : $var la configuration ordinateur de la GPO\"
write-host \"3 : $var la configuration utilisateur de la GPO\"
$rep=read-host
}
until ($rep -eq \"1\" -or $rep -eq \"2\" -or $rep -eq \"3\"«»)
switch($rep){
1 {$namegpo2.setuserenabled($value);$namegpo2.setcomputerenabled($value)}
2 {$namegpo2.setcomputerenabled($value)}
3 {$namegpo2.setuserenabled($value)}
}
write-host ($CrLf)
write-host \"Configuration GPO modifiée\"}
do{
write-host ($CrLf)
$rep=read-host \"Voulez-vous quitter le script ? [o/n]\"
}
until ($rep -eq \"o\" -or $rep -eq \"n\"«»)
}
until ($rep -eq \"o\"«»)[/code:1]
La pièce jointe get_GPOdis.ps1 est absente ou indisponible
Pièces jointes :
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 #3268
par Grégory
Réponse de Grégory sur le sujet Re:Manipulation de GPO
Le second qui affiche les GPO et OU liées et qui permet de créer un lien entre une GPO et une OU
[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]
[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]
La pièce jointe Get_GPOLinks.ps1 est absente ou indisponible
Pièces jointes :
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.064 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Contributions à la communauté
- Manipulation de GPO