2011-03-15 17 views
6

मैं एडी में समूह नीतियों को कैसे सेट करूं? मैं अपना ओयू बनाने में सक्षम हूं लेकिन मुझे इसे जोड़ने वाली समूह नीति को भी संलग्न करने की आवश्यकता है। तो यही वह है जो मैंने अभी तक किया है।सी # लिंकिंग समूह नीति AD

string 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); 

यह अभी भी जीपीओ लिंक नहीं बना रहा है, लेकिन मैं बस इतना करना चाहता हूं कि मौजूदा जीपीओ, कोई विचार नहीं है? और मदद के लिए धन्यवाद।

ठीक हो रही करीब, यह सिर्फ एक नीति वास्तव में पहले से मौजूद किसी से नहीं जुड़ता है ...

string strGPO = "Default Security with web access"; 
     string 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); 

अद्यतन और श्रमजीवी बनाया:

यह मौजूदा जीपीओ के जोड़ने के लिए OU के सी #
उपयोग करने के लिए है 1) स्थापित http://www.microsoft.com/downloads/en/confirmation.aspx?FamilyID=0a6d4c24-8cbd-4b35-9272-dd3cbfc81887
2) संदर्भ gpmgmt.dll (स्थापित निर्देशिका में पाया जाता है)
3) आप नेट 1.1
स्थापित करने के लिए हो सकता है 4) वीएस
5 में संदर्भ जोड़ें 5) GPMGMTLib का उपयोग करके जोड़ें; GPOADMINLib का उपयोग करना; परियोजना के लिए

  string strGPO = "Default Security with web access"; 
     string 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]); 
+0

कोई भी? यह असंभव नहीं हो सकता है ... –

+0

आपने 22 मिनट पहले पूछा था। धैर्य रखें। – Amy

+0

तो gpd.GETSOM ("वेब एक्सेस के साथ डिफ़ॉल्ट सुरक्षा") एक नया कहां बना रहा है? – kd7

उत्तर

4

इस link

यह नमूना स्क्रिप्ट का एक बहुत कुछ शामिल है पर एक नजर डालें, तो आप GPOAdmin.dll से जीपीओ व्यवस्थापक 1.0 प्रकार लाइब्रेरी के लिए एक संदर्भ (COM) जोड़ने की आवश्यकता होगी। इंटरॉप COM के रूप में

संदर्भ gpmgmt.dll और के रूप में नीचे दिए गए कोड का उपयोग करें::

Public Function CreateAndLinkGPO(ByVal strDomain As String, ByVal strOU As String, ByVal strGPOName As String) 
    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 

ने वही समस्या here सी # में एक नमूना स्क्रिप्ट के साथ विचार-विमर्श किया

संपादित नहीं है यह वीबीएनईटी में है, लेकिन MSFT poster from here द्वारा पोस्ट की गई सी # को आसानी से पोर्ट किया जा सकता है। मुझे लगता है कि कुंजी है। CreateGPOLink, GPMSOM अपने OU है (IGPMSOM इंटरफ़ेस है कि डोमेन या निर्दिष्ट पथ पर संगठनात्मक इकाई (OU) का प्रतिनिधित्व करता है पुन: प्राप्त करता।)

+0

बना रहा था मैंने देखा, लेकिन आप वास्तव में इसे ओयू से कैसे जोड़ते हैं? –

+0

मैं उस उदाहरण का उपयोग कर उस जीपीओ को खोजने में सक्षम हूं, लेकिन क्या एक विशिष्ट जीपीओ में CopyTo का कोई उदाहरण है? –

+0

यदि आपको मौका मिलता है तो –

2

मैं बस GPOs है कि एक विशेष OU से जुड़े होते हैं की सूची के लिए एक रास्ता तलाश कर रहे थे , इस धागे ने मुझे बहुत मदद की। मेरे पास साझा करने के लिए निम्नलिखित उप है। यह जीपीओ के नाम सूचीबद्ध नहीं करता है लेकिन गिनती देता है। एक मामूली मोड आपको नाम प्राप्त करने की अनुमति देगा (फोरैच लूप में GPOLink के गुणों की जांच करें)। आपको GPMC स्थापित करना होगा और gpmgmt.dll को एक परियोजना संदर्भ के रूप में जोड़ा जाएगा।

private string getGPOLinkCount(string 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.ToString();    
    } 
संबंधित मुद्दे