Stratégie de groupe de liaison C # dans AD

Comment définir des stratégies de groupe dans AD? Je suis en mesure de créer mon unité d’organisation, mais je dois également y associer une stratégie de groupe. C’est donc ce que j’ai jusqu’à présent.

ssortingng strOU = "OU=test454545,OU=Clients,OU=Clients,DC=domain,DC=net"; GPMGMTLib.GPM gpm = new GPMGMTLib.GPM(); GPMGMTLib.GPMConstants gpc = gpm.GetConstants(); GPMGMTLib.GPMDomain gpd = gpm.GetDomain(Environment.GetEnvironmentVariable("USERDNSDOMAIN"), "", gpc.UseAnyDC); GPMGMTLib.GPMSOM gpSom = gpd.GetSOM(strOU); GPMGMTLib.GPMGPO gpo = gpd.CreateGPO(); gpo.DisplayName = "TestOutCome"; gpSom.CreateGPOLink(-1,gpo); 

Cela ne crée toujours pas le lien GPO, mais tout ce que je veux faire est de lier un GPO existant, vous avez des idées? Et merci pour l’aide.

D’accord, ça vient de créer une politique qui ne lie pas une politique existante …

  ssortingng strGPO = "Default Security with web access"; ssortingng strOU = "OU=test454545,OU=Clients,OU=Clients,DC=domain,DC=net"; GPMGMTLib.GPM gpm = new GPMGMTLib.GPM(); GPMGMTLib.GPMConstants gpc = gpm.GetConstants(); GPMGMTLib.GPMDomain gpd = gpm.GetDomain(Environment.GetEnvironmentVariable("USERDNSDOMAIN"), "", gpc.UseAnyDC); GPMGMTLib.GPMSearchCriteria searchOBJ = gpm.CreateSearchCriteria(); searchOBJ.Add(gpc.SearchPropertyGPODisplayName, gpc.SearchOpEquals, strGPO); GPMGMTLib.GPMGPOCollection objGPOlist = gpd.SearchGPOs(searchOBJ); GPMGMTLib.GPMSOM gpSom = gpd.GetSOM(strOU); GPMGMTLib.GPMGPO gpo = gpd.CreateGPO(); gpSom.CreateGPOLink(-1,gpo); 

Mise à jour et TRAVAIL:

Ceci permet de lier des objects de stratégie de groupe existants à des unités d’organisation à l’aide de C #
1) installez http://www.microsoft.com/downloads/en/confirmation.aspx?FamilyID=0a6d4c24-8cbd-4b35-9272-dd3cbfc81887
2) Référence gpmgmt.dll (située dans le répertoire d’installation)
3) Vous devrez peut-être installer .Net 1.1
4) Ajouter des références à VS
5) append en utilisant GPMGMTLib; using GPOADMINLib; projeter

  ssortingng strGPO = "Default Security with web access"; ssortingng strOU = "OU=test454545,OU=Clients,OU=clients,DC=domainh,DC=net"; GPMGMTLib.GPM gpm = new GPMGMTLib.GPM(); GPMGMTLib.GPMConstants gpc = gpm.GetConstants(); GPMGMTLib.GPMDomain gpd = gpm.GetDomain(Environment.GetEnvironmentVariable("USERDNSDOMAIN"), "", gpc.UseAnyDC); GPMGMTLib.GPMSearchCriteria searchOBJ = gpm.CreateSearchCriteria(); searchOBJ.Add(gpc.SearchPropertyGPODisplayName, gpc.SearchOpEquals, strGPO); GPMGMTLib.GPMGPOCollection objGPOlist = gpd.SearchGPOs(searchOBJ); GPMGMTLib.GPMSOM gpSom = gpd.GetSOM(strOU); GPMGMTLib.GPMGPO gpo = gpd.CreateGPO(); gpSom.CreateGPOLink(-1,objGPOlist[1]); 

Regardez ce lien

Il contient de nombreux exemples de scripts. Vous devez append une référence (COM) à la bibliothèque de types GPO Admin 1.0 à partir de GPOAdmin.dll.

Il existe un problème similaire discuté ici avec un exemple de script en C #

EDIT :

Référencez gpmgmt.dll COM interop et utilisez le code ci-dessous:

 Public Function CreateAndLinkGPO(ByVal strDomain As Ssortingng, ByVal strOU As Ssortingng, ByVal strGPOName As Ssortingng) Dim gpm As New GPM() Dim gpmConst As GPMConstants = gpm.GetConstants() Dim domain As GPMDomain = gpm.GetDomain(strDomain, "", gpmConst.UseAnyDC) Dim som As GPMSOM = domain.GetSOM(strOU) 'create new GPO Dim gpo As GPMGPO = domain.CreateGPO() gpo.DisplayName = strGPOName 'create link to OU som.CreateGPOLink(-1, gpo) CreateAndLinkGPO = gpo End Function 

Ceci est en VB.NET, mais peut être facilement porté en C # posté par une affiche MSFT à partir d’ici . Je pense que la clé est. CreateGPOLink , GPMSOM est votre unité d’organisation (récupère l’interface IGPMSOM qui représente le domaine ou l’unité d’organisation au niveau du chemin spécifié.)

Je cherchais un moyen de simplement répertorier les objects de stratégie de groupe liés à une unité d’organisation particulière. Ce fil m’a énormément aidé. J’ai le sous suivant à partager. Il ne répertorie pas les noms des objects de stratégie de groupe, mais renvoie le nombre. Un mod mineur vous permettra d’obtenir les noms (consultez les propriétés de GPOLink dans la boucle foreach). La console GPMC doit être installée et le fichier gpmgmt.dll ajouté en tant que référence de projet.

  private ssortingng getGPOLinkCount(ssortingng OUPathDN, bool onlyEnabledLinks, bool includeInheritedLinks) { int linkCount = 0; try { GPMGMTLib.GPM gpm = new GPMGMTLib.GPM(); GPMGMTLib.IGPMConstants gpc = gpm.GetConstants(); GPMGMTLib.IGPMDomain gpd = gpm.GetDomain(Environment.GetEnvironmentVariable("USERDNSDOMAIN"), "", gpc.UseAnyDC); GPMGMTLib.GPMSOM gpSom = gpd.GetSOM(OUPathDN); GPMGPOLinksCollection GPOLinks = gpSom.GetGPOLinks(); GPMGPOLinksCollection GPOLinksIncludingInherited = gpSom.GetInheritedGPOLinks(); if (!includeInheritedLinks) { foreach (GPMGPOLink GPOLink in GPOLinks) { if (onlyEnabledLinks) { if (GPOLink.Enabled) { linkCount++; } } if (!onlyEnabledLinks) //Get all links, disabled or enabled { linkCount++; } } } if (includeInheritedLinks) { foreach (GPMGPOLink GPOLink in GPOLinksIncludingInherited) { if (onlyEnabledLinks) { if (GPOLink.Enabled) { linkCount++; } } if (!onlyEnabledLinks) //Get all links, disabled or enabled { linkCount++; } } } } catch (Exception ex) { return "GPO links: " + ex.Message.Replace("\r\n", ""); } return linkCount.ToSsortingng(); }