自定义 SharePoint STSADM 命令






4.90/5 (9投票s)
为 SharePoint 中的 stsadm.exe 管理工具编写自定义命令。
引言
使用 Microsoft Office SharePoint Server 2007 (MOSS) 和 WSS v3,可以为 STSADM 管理工具实现自定义命令。
为什么?
您想为开发/测试实现一些小助手,而无需管理界面。
您想为管理员添加功能以帮助他们,包括脚本化这些命令以进行批量使用的可能性。
实现自定义命令可能还有其他原因,但以上是最常见的问题和目的。
我在这里的目的是主要帮助那些实现自定义计时器作业的开发人员,就像我做的那样。
如何做到?
开发自定义命令非常简单。只有一个小小的项目管理和部署开销。这很好,所以您可以专注于主要目标。
您需要一个实现 ISPStsadmCommand 接口的类,以及一个用于注册命令的 XML 文件,以便 stsadm.exe 知道如何处理您的命令。
根据您提供的参数和功能,您可以编写一些帮助消息供用户在命令提示符下显示。如果您追求美观,这可能比正常情况花费更长的时间。
我提供了一个如何实现自定义命令的简短示例。详细说明可以在 Tony Bierman 的文章中找到。
- 在 Visual Studio 中创建一个类库项目,并引用 Microsoft.Sharepoint.dll
- 创建一个名称为您的命令的类,例如 GetJobInfo.cs
- 让该类实现
Microsoft.SharePoint.StsAdmin
中的ISPStsadmCommand
接口 - 在
GetHelpMessage
方法中返回一些有用的帮助文本 - 在
Run
方法中实现您的功能,包括参数验证和在用户缺少参数时的有用帮助 - 签名、编译并将您的程序集部署到 gac
- 创建 XML 文件并添加您的命令和程序集引用,然后将此 XML 复制到您的 \webs server extensions\12\CONFIG 文件夹。
- 检查您的返回值和消息,并为自己刚刚实现了一个可能对某人有用的自定义 SharePoint 管理命令而感到高兴;)
在我目前的项目中,我开发了 一些 SharePoint 的计时器作业,并发现管理这些作业非常不方便。所以我开始实现一套命令,并想与您分享。如果开发了新命令,我会更新此集合。
Commands
GetJobInfo
显示有关特定计时器作业的信息。

GetJobInfo
命令的帮助。
GetJobInfo
命令的输出。我认为获取下一次发生的范围很有用。此外,我使用此命令来验证我对作业定义所做的更改。
GetJobInfos
与 GetJobInfo
命令类似,但显示所有可用计时器作业的信息。

GetJobInfos
命令的帮助。有了这些信息,您可以获取 GetJobInfo
命令所需的计时器作业的名称。
RunTimerJob
立即执行指定的计时器作业。

RunTimerJob
命令的帮助。要测试作业在您需要时(When YOU need it)的功能,您现在可以简单地执行一个计时器作业。通过这种方式,您可以在测试/实时服务器上执行一个作业,即使它被配置为每日计划。这正是我目前项目中所做的。在我的开发机器上,我设置了分钟级计划,而在实时服务器上,需要有一个每日计划。据我所知,设置作业执行时间的唯一地方是一个具有重写的 FeatureActivating
/FeatureDeactivating
方法的特性(FeatureReceiver
链接)。对于开发和测试机器来说,在代码中更改此设置并重新部署程序集是很不方便的。这也可以通过下一个命令完成。
SetJobSchedule
设置指定作业的计划。

SetJobSchedule
命令的帮助。使用此命令,您可以更改作业执行的时间。对于从开发到生产的更改以及反之亦然非常方便。看看我在前面的命令中提到的。
提示:无法将 OneTimeSchedule
更改为其他类型的计划。
建议/优化
如果适用,请使用资源文件翻译错误/提示消息。
虽然可能,但不要在一个类中实现多于一个命令的功能。您可以在 Run
方法中获得传递的命令,因此您可以使用 switch
语句。按类名查找命令更容易。我也将类命名为与命令名称相同。这样也更容易编写文档。
我此时不知道 run
方法的 int
返回参数的处理方式。也许它是您可以在批处理模式下使用的退出代码。如果是这样,也应该记录下来。如果有人知道这方面的行为,请告诉我。
当我开发新命令时(并且我可以发布它们),我将更新此“命令集”。
如果您喜欢这些信息,并且可能觉得这些命令很有用,甚至更好的是如果您能使用它们,请告诉我。