Question Manipulation de GPO

Plus d'informations
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]

La pièce jointe get_GPOdis.ps1 est absente ou indisponible

<br><br>Message édité par: Nostra, à: 19/11/08 09:49
Pièces jointes :

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

Plus d'informations
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 = \&quot;.\&quot;«»)
$CrLF=\&quot;`r`n\&quot;

do{

$lst=\&quot;\&quot;
$var=\&quot;\&quot;

#On récupère la liste des GPO du domaine
$gpm = New-Object -ComObject GPMgmt.GPM
$gpmConstants = $gpm.GetConstants()
$gpmDomain = $gpm.GetDomain($domainName, \&quot;\&quot;, $gpmConstants.UseAnyDC)
$gpmSearchCriteria = $gpm.CreateSearchCriteria()
$gpmAllGposInDomain = $gpmDomain.SearchGPOs($gpmSearchCriteria)

clear
write-host \&quot;Liste des GPO et des OU auxquelles elles sont liées:\&quot;
write-host \&quot;\&quot;

#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\&quot;:\&quot;
$gpmsomlist|foreach{write-host \&quot;-\&quot;$_.name}
write-host \&quot;\&quot;
}
else
{
$var+=$_.displayname + $crlf
}
}
write-host ($crlf*2)
write-host \&quot;Liste des GPO non liées:\&quot;
write-host \&quot;\&quot;
$var

write-host ($CrLf)
write-host (\&quot;_\&quot; * 80)
write-host ($CrLf)

do{
$rep=read-host \&quot;Voulez-vous lier une GPO ? [o/n]\&quot;
}until ($rep -eq \&quot;o\&quot; -or $rep -eq \&quot;n\&quot;«»)

write-host \&quot;\&quot;

if($rep -eq \&quot;o\&quot;«»)
{

do{
$namegpo=read-host \&quot;Entrez le nom de la GPO \&quot;
$namegpo2=$gpmAllGposInDomain|where{$_.displayname -eq $namegpo}
write-host ($CrLf)
}
until ($namegpo -eq $namegpo2.displayname)


#On affiche la liste de OU du domaine
$ldapQuery = \&quot;(&amp;(objectCategory=organizationalunit))\&quot;
$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 \&quot;Liste des OU :\&quot;
$lstou
write-host ($CrLf)

do{
$nameou=read-host \&quot;Entrez le nom de l'OU où vous voulez lier votre GPO \&quot;
$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(\&quot;.\&quot;«»)
$dom=$lst[0]
$ext=$lst[1]
$pathou=\&quot;ldap://ou=\&quot; + $nameou + \&quot;,DC=\&quot; + $dom + \&quot;,dc=\&quot; + $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 \&quot;Voulez-vous lier d'autres GPO ? [o/n]\&quot;
}until ($end -eq \&quot;o\&quot; -or $end -eq \&quot;n\&quot;«»)

}

}until($end -eq \&quot;n\&quot; -or $rep -eq \&quot;n\&quot;«»)
[/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
Propulsé par Kunena