3

我希望通过 C# 获取 SharePoint 配置数据库版本,并在Microsoft.SharePoint.Administration下找到了SPConfigDatabase 类,它有一个成员。这正是我正在寻找的,但现在已经过时了。Version

这样做的最佳方法是什么?理想情况下,我也想获取累积更新日期,尽管这实际上只是版本号的另一个名称。

谢谢

4

3 回答 3

3

使用 C# 获取它的方法是使用Microsoft.SharePoint.Administration.SPFarm类,您要查找的属性是BuildVersion

var v = SPFarm.Local.BuildVersion;

当它返回一个System.Version对象时,您可能希望将这些值连接在一起以使字符串像在中央管理中一样显示:

var friendly = v.Major + "." + v.Minor + "." + v.Build + "." + v.Revision;

另外,请注意,要访问 SPFarm.Local 属性,您需要在 64 位模式下运行代码并拥有授权帐户。事实上,在我的 VM 上启用 UAC 后,我需要通过右键单击它并选择“以管理员身份运行”来运行我的代码。

于 2012-09-13T15:26:19.853 回答
1

我通过执行 powershell 脚本找到了一个暂定的解决方案。这是我的解决方案,它从 powershell 脚本将结果打印到控制台:

using System.Collections.ObjectModel;
using System.Management.Automation;
using System.Management.Automation.Runspaces;
.
.
.
MAIN CODE:
Runspace runspace = RunspaceFactory.CreateRunspace();

runspace.Open();


PowerShell ps = PowerShell.Create();
ps.AddScript("Add-PsSnapin Microsoft.SharePoint.Powershell");
ps.AddScript("get-spfarm | select BuildVersion");
ps.AddCommand("Out-String");

Collection <PSObject> results = ps.Invoke();
runspace.Close();

foreach (PSObject obj in results)
{
    Console.WriteLine(obj.ToString());
}

归功于http://www.codeproject.com/Articles/18229/How-to-run-PowerShell-scripts-from-Chttp://social.msdn.microsoft.com/Forums/hu/sharepoint2010general/thread/ 88b11fe3-c218-49a3-ac4b-d1a04939980c

于 2012-09-13T15:17:36.537 回答
0

只需连接到数据库并执行此查询

SELECT SERVERPROPERTY ('productversion'), 
       SERVERPROPERTY ('productlevel'), 
       SERVERPROPERTY ('edition')

参考资料: http: //support.microsoft.com/kb/321185

我希望这会有所帮助

于 2012-09-13T14:30:42.180 回答