我正在尝试将现有的链接到一个新的OU(刚刚创build),使用这里find的资源: http : //support.microsoft.com/kb/248392和这里: http : //www.thescriptlibrary.com/ Default.asp的?行动=显示和电平=类别3&ScriptLanguage = VBScript中&组别=活跃%20Directory&类别2 = OU中与标题=指派%20A%20New%20Group%20Policy%20Link%20to%20AN%20OU,%20revised
问题是,当它.Get(“gPLink”)它给出了一个错误,说:“目录属性不能在caching中find”。 我相当积极,这是因为目前没有GPO与OU相连,而且期望至less有一个(如果我错了,请纠正我)。
将不胜感激任何提示和技巧! 谢谢
没有看到你的脚本,我会说你的假设是合理的。 你看到的错误应该抛在你的脚本的行,你“获得”“gpLink”属性。 把一些错误陷入这条线,你应该没问题。 你链接到的第一个脚本有这样的错误陷阱(尽pipe脚本中的“On Error Resume Next”马虎的forms很糟糕,而不是在错误发生的地方有一个很好的error handling程序)。
编辑:
下面是你在微软链接的脚本的“混音”,在我讨论的“.Get”附近有一些error handling。 当没有指定“gPLink”属性时,“.Get”会导致你所看到的错误,所以用“On Error Goto”结尾来捕获错误 – 运行错误。 (我真的应该检查什么错误返回,并适当地为错误返回…)
Option Explicit Dim objiADSToolsDCFunctions, objOU, objGPOs, gPLink, i, gPOChosen Const DNS_DOMAIN_NAME = "domain.com" Const OU_DN = "ou=test,dc=domain,dc=com" Set objiADSToolsDCFunctions = CreateObject("iadstools.dcfunctions") Set objOU = GetObject("LDAP://" & DNS_DOMAIN_NAME & "/" & OU_DN) objGPOs = objiADSToolsDCFunctions.GetGPOs("flounderball.gov","home-srv01") If objGPOs > 0 Then For i = 1 to objGPOs WScript.Echo objiADSToolsDCFunctions.gponame(i) WScript.Echo Chr(9) & objiADSToolsDCFunctions.gpoguid(i) Next ' i WScript.Echo "The objOU you will be modifying is:" WScript.Echo Chr(9) & objOU.adspath gPOChosen = InputBox("Enter the name of the GPO to add (case insensitive):") If gPOChosen <> "" Then For i = 1 to objGPOs If LCase(objiADSToolsDCFunctions.gPOName(i)) = LCase(gPOChosen) Then On Error Resume Next gPLink = objOU.Get("gPLink") On Error Goto 0 gPLink = gPLink & "[LDAP://CN=" & objiADSToolsDCFunctions.gPOGUID(i) & ",CN=Policies,CN=System," & objiADSToolsDCFunctions.getdefaultnamingcontext(DNS_DOMAIN_NAME) & ";0]" objOU.Put "gpLink", gpLink objOU.SetInfo WScript.Echo "Successfully added a link to this objOU for the GPO (" & objiADSToolsDCFunctions.gponame(i) & ")" Exit For End If Next ' i End If End If
您的错误消息指出该属性未加载到对象的caching中。 那么你为什么不尝试用GetInfoEx方法显式地将它添加到对象的caching?
就在你的objContainer.Get("gPLink")行之前,放置如下:
objContainer.GetInfoEx Array("gPLink"), 0
这在我的域环境中似乎不是必需的。 但谁知道你和我的不一样。 此外,当我运行我的示例脚本对没有任何GPO附加的OU, strExistingGPLink只是被设置为一个空string。