SharePoint

SharePoint 强大的命令行管理功能

Todd Klindt

 

概览:

  • 使用 STSADM 配置 SharePoint
  • 编写脚本完成日常管理任务
  • 高级 STSADM 操作

想想人们如何与 Windows 或 Microsoft Office 交互吧。一些用户是贪婪的捕鼠动物,使用鼠标指针在菜单和工具栏中导航,执行常见任务。另外一些喜欢使用

键盘,快速敲击着熟悉的按键和快捷键。对于任何给定的任务,几乎总有几种方法完成它。

事实上,图形界面很容易使用,但它对需要您重复相同事情的任务来说同样很麻烦。一些事情用键盘完成要更加简单。如果您做过任何 SharePoint® 管理工作,您可能已经经历过那种好像在图形界面前抓狂的事情。但实际上 SharePoint 提供了更强大的方法来完成任务。

管理 Windows® SharePoint Services (WSS) 和 Microsoft® Office SharePoint Server 2007 (MOSS) 的主要界面是基于 GUI 的 SharePoint 管理中心。但 SharePoint 也包含一个管理功能更强大的命令行工具。此工具 (STSADM.exe) 提供 SharePoint 管理中心的全部功能,但却拥有许多管理员渴望的命令行灵活性。在本文中,我将带给您使用 STSADM 管理 WSS 和 MOSS 的速成课程。我也会就如何配置您的环境给出一些提示,并讨论一些常用 STSADM 命令。我甚至会教您一些让您看来像个英雄的高级 STSADM 命令,如果出现使用它们的需要的话。

入门

如果您还没有偶然发现 STSADM,可能因为它隐藏得稍微深了点。在 Windows SharePoint Services 2.0 中,默认情况下它在 c:\program files\common files\microsoft shared\web server extensions\60\bin。版本 3.0 的默认位置是 c:\program files\common files\microsoft shared\web server extensions\12\bin。

为了简化此工具的访问操作,我使用两种不同的方法。第一种,我只是将该目录添加到我的 PATH 环境变量中。这样无论我在文件系统的哪个位置,都能使用 STSADM。但是,这样不总是行得通。我的第二种方法是,创建到 CMD.EXE 的快捷方式并将 STSADM 的位置设置为起始位置。为什么不将快捷方式直接指向 STSADM 呢?因为 STSADM 不是交互式的,所以那样行不通。结果,如果您将快捷方式直接指向 STSADM,您会看到它的用法说明很快显示,然后就退出了。

当您运行 STSADM 时,您需要是 Web 服务器上的本地管理员组的成员,而且您需要在本地执行程序。这意味着您不能使用 STSADM 来远程管理 SharePoint 服务器。

要查看使用 STSADM 您可以执行哪些操作,可在命令提示符中键入 stsadm.exe -help。在您对 SharePoint 应用了更新和修补程序之后一定要检查此列表,因为可能添加了新操作。在 go.microsoft.com/fwlink/?LinkId=77516 也提供了 stsadm.exe 操作的简易指南。

STSADM 基础

让我们首先来查看一些您可能用来调整现有 SharePoint 安装的命令。您可以使用 STSADM 来向 SharePoint 添加功能和修改配置设置。

STSADM 使用 -o 参数,后跟您要执行的操作。仅键入 STSADM -operationname 不会有效果。例如,如果您要向安装添加站点模板,您可以使用以下命令:

Stsadm -o addtemplate -filename <filename of the template> 
-title <title of template> -description <description of template>

或者,如果您要添加 Web 部件包,可以使用这个命令:

Stsadm -o addwppack -filename <filename of the Web Part Package>

要查看任何操作的用法详细信息,只是传递该操作而不带参数,STSADM 就将告诉您它期望输入的内容。STSADM -help operationname 也会给出用法信息。

管理模板时,您可以使用 enumtemplates 操作以查看哪些模板已经添加,使用 deletetemplate 以删除任何已安装的模板。与此类似,对 Web 部件包也有相应的命令。您可以使用 enumwppacks 操作以列出每个虚拟服务器或 Web 应用程序已安装的 Web 部件包,使用 deletewppack 以删除任何已添加的部件包。

STSADM 也有两个处理 SharePoint 设置的命令:setproperty 和 getproperty。不带参数执行任何一个,将给出您可以查看或操作的属性列表。与 STSADM 本身类似,此列表也随更新和修补程序而发生变化。不过,有几个属性比其他属性常用得多。图 1 列出了安装 SharePoint 后您可能想要设置的一些属性,包括我听见 SharePoint 管理员询问的最常见属性。

Figure 1 设置有用的 SharePoint 属性

属性 功能
Alerts-enabled 为虚拟服务器或 Web 应用程序打开或关闭警报。
Alerts-limited 指定是否对用户在虚拟服务器或 Web 应用程序中设置特定数量的警报进行限制。
Alerts-maximum 如果设置了警报限制,这是用户可设置的警报最大数量。
Days-to-show-new-icon 添加到网站的项目旁边会出现“新”图标,此属性设置该图标出现的时间,例如,像通知邮件。
Job-immediate-alerts 指定 SharePoint 查找要发送的即时警报的频率。SharePoint 2.0 的默认设置为五分钟。可在此调整该间隔时间。减少时间会增加 Web 和数据库服务器的负载,所以如果您更改了此属性,请注意这一点。
Job-daily-alerts 指定每日警报的发送时间。SharePoint 2.0 默认设置为“22:00 到 06:00 之间”。如果有用户不在与服务器相同的时区内,您可能要调整此属性。
Job-weekly-alerts 可能您看出了这里的规律。此属性设置每周警报的时间安排。

让我们来快速地看一看这些属性其中之一的使用。下面的命令将使 SharePoint 每 10 分钟就发出即时警报:

Stsadm -o setproperty -pn job-immediate-alerts -pv "Every 10 minutes"

注意我使用了 -pn 和 -pv 来代替 -propertyname 和 -propertyvalue。这些是您不想键入整个单词时可接受的缩写形式。同时注意,在本节讨论过的所有示例和命令,在 Windows SharePoint Services 的 2.0 和 3.0 版中都有效。

日常管理

日常的 SharePoint 管理工作非常轻松。对大多数 SharePoint 管理员来说,日常任务的主要部分由管理用户和站点两部分组成。STSADM 有一些操作来简化这些任务。

我将从站点和网站开始。为保持一致性,我使用的“站点”指站点集合,使用的“网站”指子站点(也称为子网站)。有些术语很难理解,但如果您与 STSADM 使用的保持一致,要找到您需要的命令会更容易。

如果运行大型的 SharePoint 安装,您可能会花费大量的时间来为用户创建新站点。我知道我自己就是重复地做着这些工作。可以在 SharePoint 管理中心轻松地完成创建新站点。但因为我如此频繁地执行这项任务,我发现使用 STSADM 来完成任务更快。

我使用 createsite 操作。它非常简单,有以下参数:

  • url <url>
  • ownerlogin <DOMAIN\name>
  • owneremail <someone@example.com\>
  • ownername <显示名称>
  • lcid <语言>
  • sitetemplate <站点模板>
  • title <站点标题>
  • description <站点描述>
  • quota <配额模板>

可在命令提示符下键入 stsadm -help createsite 来显示这些信息(参见图 2)。在这九个参数中,必填字段只有 URL、ownerlogin 和 owneremail。

图 2 Createsite 参数

图 2** Createsite 参数 **(单击该图像获得较大视图)

如果您经常创建站点,您可以在简化过程方面更进一步,方法是编写 STSADM 的包装脚本来自动执行任务。举例来说,要自动创建个人站点,可将下面的代码保存到名为 createpersonalsite.cmd 的文本文件:

stsadm -o createsite -url http://localhost/users/%1 -ownerlogin contoso\%1 
-owneremail %1@contoso.com -sitetemplate usersite.stp 
-title "Personal site for %1" -description "Personal site for %1" -quota "500 MB"

然后为用户 jsmith 创建一个站点,只需执行以下命令即可:

createpersonalsite.cmd jsmith

通过编写站点创建脚本,为您节约了大量打字工作,而且能保证所有新建站点是一致的。操作 createweb 在网站级别提供相同的功能。

在 Windows SharePoint Services 2.0 中,获得特定虚拟服务器上站点集合的详尽列表的唯一简单方法就是使用 STSADM。Enumsites 以 XML 格式列出特定虚拟服务器或 Web 应用程序上的所有站点集合。这可与数据视图 Web 部件联合使用,以轻松查看站点集合的列表。(有关详细信息,请参阅提要栏中的“使用数据视图 Web 部件”。)

STSADM 提供 deletesite 操作用于移除站点(正如您猜测那样)。您只需要提供 URL:另外,您也可将 -deleteadaccounts 传递给它,以删除 Active Directory® 里的帐户。在使用网站时,您应当使用 deleteweb 操作。

您也可添加、删除和枚举站点或网站的用户。相关操作分别是 adduser、deleteuser 和 enumusers。如果需要向站点大量添加用户,或如果您需要维持一份因审计目的而拥有站点访问权的用户列表,这些操作非常便捷。

当使用网站时,您可访问另外的操作,即 renameweb,它可让您更改网站的名称和 URL。例如,要将网站从“oldname”重命名为“coolnewname”,使用以下命令:

Stsadm -o renameweb -url http://localhost/oldname -newname coolnewname

在项目名称改变或业务部门重新调整时,这可是应急救生命令啊。在 Windows SharePoint Services 2.0 中存在一个大问题,即迁移网站的唯一方法是使用 SMIGRATE.exe,而它不会维持任何用户相关的设置,例如成员身份或警报。而在 Windows SharePoint Services 3.0 中,这已经不是大问题了,因为 STSADM 可以备份和还原网站和站点。

备份和还原

STSADM 的最佳用法之一就是备份和还原站点和网站。对于小型到中型安装,此功能是灾难恢复计划的基础。备份操作是一看就明白的,并且非常容易使用。只需告诉 STSADM 要备份哪个站点和写入备份文件的位置即可,像这样:

Stsadm -o backup -url http://localhost -filename site.bak

此操作将整个站点集合转储至 site.bak 文件。它包括全部站点内容,例如网站、文档版本、列表和用户。它不会备份任何站点定义和您在服务器的文件系统级别所做的更改。

虽然备份操作是很重要的,但也有一些意外的困难需要您特别注意。如果站点足够大,在备份过程期间可能会锁定内容数据库。这可能阻止用户访问该数据库中的任何站点,直到备份操作完成为止。Service Pack 已经对此问题进行了补救,但它仍然是随着站点规模增长需要注意的事情。进行备份和还原时,STSADM 会使用服务器的临时目录,所以请监视您的驱动器空间。

使用数据视图 Web 部件

您可将 enumsites 命令与数据视图 Web 部件联合使用,以轻松查看站点集合的列表。让我们看看如何实现吧。

首先,创建一个运行以下命令的计划任务:

stsadm –o enumsites –url http://localhost
>c:\inetpub\wwwroot\excludedsite\sites.xml 

确保将 XML 文件写入到用 IIS 发布但不由 SharePoint 管理的目录中。然后使用 Microsoft FrontPage®(或 FrontPage 后续版本、Microsoft Office SharePoint Designer 2007)将数据视图 Web 部件添加到 Web 部件页,并将它指向 XML 文件的 URL。

数据视图 Web 部件提供诸如排序、筛选和分组之类的功能。您也可以使 URL 字段成为直接连接到站点的链接。相反,如果您需要网站的列表,则操作 enumsubwebs 提供站点集合或网站中的子站点的 XML 输出结果。

最后,注意 STSADM 备份对小型到中型站点效果不错,但随着规模显著增加此功能就不好用了。对于非常大的站点(几千吉字节或更大),备份和还原过程会相当慢。

还原站点也同样简单。STSADM -o restore 可将 STSADM -o backup 创建的文件写回 SharePoint 的站点。使用这个命令您有很大的灵活性:您可以将站点还原到它的原始位置(例如,如果站点被错误删除了),您也可以将它作为相同虚拟服务器上的不同站点来还原(也许如果您要在某个站点上测试还原过程,而不想冒破坏数据的风险),或者您可以将站点还原到完全不同的服务器或虚拟服务器上。

还原到不同的站点或服务器使得进行单个文档恢复要更加简单一些。如果您备份了站点而用户需要还原一个文档,您不需要还原整个站点。那样会丢失从备份存储日以来对站点所做的全部更改。作为替代,您只需要将站点还原到不同的 URL,然后抓取需要的文档,并将其保存回原始站点。

在 Windows SharePoint Services 2.0 中,STSADM 有一个相当严重的限制。备份时,它只能处理站点,而不能处理网站。管理员们表达了他们的不满,而 Microsoft 也回应了。在 Windows SharePoint Services 3.0 中,备份和还原操作现在可处理网站了。它还添加了两个新命令:import 和 export。

要导出网站,请使用下面的简单命令:

Stsadm -o export -url http://localhost/web -filename backup.dat

Export 有方便的选项,包括 -versions 开关。这允许您通过限制备份哪些文件版本来决定备份文件大小。

要将网站导入回服务器,请使用下面的简单命令:

Stsadm -o import -url http://localhost/web2 -filename backup.dat

如果您的站点足够大,备份文件可能分成多个部分。在这种情况下,将 STSADM -o import 指向第一个文件,它会自动抓取后续文件。

专家操作

现在您已经习惯了 STSADM,我想向您展示几个用来摆脱束缚的操作。第一个是新添加的操作,称为 migrateuser。版本 2.0 不会将自身与 Active Directory 同步。如果帐户被重命名,它不再能登录到 SharePoint。过去,也没有办法将用户访问权从一个域用户迁移到另一个域用户。在 Windows SharePoint Services 2.0 Service Pack 2 (SP2) 之前,您必须从每个网站删除用户并手动添加新帐户。

SP2 引入了新的 API,而 STSADM 利用了它。如果帐户 jsmith 重命名为 jjones,您可以使用以下命令:

Stsadm -o migrateuser -oldlogin domain\jsmith -newlogin domain\jjones -ignoresidhistory

因为不是真正迁移帐户,所以您可以忽略 Windows 的安全 ID (SID) 历史记录。注意此命令不需要 URL。它在整个内容数据库中做出更改,而与站点或网站无关。

另一个可使您摆脱束缚的操作是 unextendvs。如果不想 SharePoint 渲染虚拟服务器或 Web 应用程序,您可取消扩展它。通常,您会从 SharePoint 配置分析器中完成这项任务。但是,在 Web 场中,SharePoint 配置分析器需要服务器都处于相同的修补程序级别。有可能出现服务器与场中剩余服务器脱离同步的情况,因此它不会在 SharePoint 配置分析器中获得“取消扩展”选项。但使用 STSADM 的以下命令将取消扩展您的虚拟服务器:

Stsadm -o unextendvs -url http://localhost

一旦服务器不再位于 Web 场中,您可以执行需要的维护工作。

关于 Web 场,为了易于管理,您可能想要全部的服务器都在相同端口上使用 SharePoint 配置分析器。端口是在安装 SharePoint 时随机生成的,但 STSADM 包含将端口更改为指定端口的操作:

Stsadm -o setadminport -port 1026

这将进行所有必要的数据库更改,更改 IIS,并调整管理工具中指向 SharePoint 配置分析器的快捷方式。

结束语

Windows SharePoint Services 是功能强大的解决方案,而它需要强大的管理。STSADM 则提供了完成 SharePoint 管理工作(包括自动配置和普通日常任务)的方法。实际上,有时它是完成任务的唯一方法。

Todd Klindt 是一位供职于 UGS 的系统分析师,他在 UGS 每天都与 SharePoint 打交道 — 而且是领着工资做这些的。他也是一位 Windows SharePoint Services MVP 和宝瓶座的人。

© 2008 Microsoft Corporation 与 CMP Media, LLC.保留所有权利;不得对全文或部分内容进行复制.