如何列出 SharePoint 2007 Web 应用程序上引用特定解决方案 (WSP) 的所有站点/页面?

如何列出 SharePoint 2007 Web 应用程序上引用特定解决方案 (WSP) 的所有站点/页面?

是否有stsadm()命令(或其他方法)可以显示正在使用解决方案的所有地方。我希望使用解决方案 GUID 或完全限定名称(如 CorasWork.Workplace.WebParts.ActionLauncher...)在列表中获取结果

我发现stsadm()操作枚举解决方案非常有用,但它并没有显示控件正在哪些网站或页面上使用。

我怎样才能获得该信息?

塞斯

答案1

不,没有现成的方法可以做到这一点 - 你必须编写代码。现在这不是一个销售宣传,该工具不是商业化的,甚至不是商业质量的,但我确实有一个我编写的内容分析工具,它可以完成你要求的以及更多其他功能。基本上,我使用该工具来分析新客户农场,特别是接近迁移的农场,这样我就可以知道什么生活在哪里,并了解他们存储的内容类型以及存储效果如何。无论如何,作为示例,以下是您可能执行的操作的片段:

    public XmlDocument CreateAssetLibrary(string siteURL, Delegate callback)
    {
        //Set up the XML and go get the data
        XmlDocument doc = new XmlDocument();
        XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", null, null);
        doc.AppendChild(dec);
        var pi = doc.CreateProcessingInstruction("xml-stylesheet", "type=\"text/xsl\" href=\"contentanalysis.xsl\"");
        doc.AppendChild(pi);

        using (SPSite siteColl = new SPSite(siteURL))
        {
            using (SPWeb web = siteColl.OpenWeb())
            {
                web.AllowUnsafeUpdates = true;
                XmlElement sitecollections = doc.CreateElement("sitecollections");
                SPWebApplication webApp = web.Site.WebApplication;
                totalSites = webApp.Sites.Count;

                foreach (SPSite site in webApp.Sites)
                {
                    started = DateTime.Now;
                    websProcessedThisSite = 0;
                    totalWebsThisSite = site.AllWebs.Count;
                    webCount = 0;
                    listCount = 0;
                    itemCount = 0;
                    fileCount = 0;
                    listItemCount = 0;
                    userCount = 0;
                    groupCount = 0;

                    //initiate the global profile hashtable with a catch all entry for non-file based content (i.e. SPListItems)
                    globalHash.Clear();
                    globalHash.Add(nonFileID, new ContentItem(nonFileID, 0, 0));
                    SPWeb currentWeb = site.OpenWeb();
                    XmlElement sitecollection = doc.CreateElement("sitecollection");
                    sitecollection.SetAttribute("sitename", currentWeb.Title);
                    sitecollection.SetAttribute("link", currentWeb.Url);
                    XmlElement structure = getXML(currentWeb, doc, callback);
                    XmlElement profile = getProfile(doc);
                    XmlElement stats = getStats(doc);
                    structure.AppendChild(profile);
                    structure.AppendChild(stats);
                    sitecollection.AppendChild(structure);
                    sitecollections.AppendChild(sitecollection);
                    sitesProcessed++;
                    callback.DynamicInvoke(new Object[6] { doc.InnerXml, Convert.ToInt32(totalSites), Convert.ToInt32(sitesProcessed), 0, 0, doc });
                }
                web.AllowUnsafeUpdates = false;
                doc.AppendChild(sitecollections);
            }
        }
        return doc;
    }

最简单的做法是报告哪些网站或网站正在使用某个功能/解决方案。更难的做法是逐页报告 - 您需要扩展此方法以遍历库中的每个页面并检查元数据以确定正在使用的功能。

相关内容