2009-02-01 71 views
3

我经常有客户请求更改属性,例如服务器场上所有现有网站上所有文档库的版本历史记录设置。如何修改现有的SharePoint网站?

到目前为止,我已经能够想到的最好的解决方案是在Powershell中编写脚本,在运行脚本之前测试脚本,然后祈祷我没有忽略关键的事情。 有更好更安全的方法吗?

回答

3

我个人的 “自定义工作流程” 如下:在PowerShell中

  1. 原型解决方案。乱。
  2. 导出我杂乱的PowerShell命令历史记录。
  3. 将命令历史记录粘贴到Visual Studio中,逐行转换为C#(除了转换管道之外,这是一个大部分机械过程)
  4. 包作为由SharePoint解决方案部署的功能(使用WSPBuilder扩展);具体来说,请从功能接收器中调用我转换的“脚本”。还要编写代码,以便在您的功能停用时解除您的自定义功能。
  5. 在dev中进行测试,在QA中进行测试。 5b。如果它是一个影响很大的巨大脚本,我会要求我们的DBA将大内容数据库恢复到QA数据库服务器;那么我会将此生产副本附加到我们的QA场,并且对生产数据副本运行该脚本。这是我们从WSSv2/2003版迁移至关重要的一步;我想在迁移到2007年之前,我已经进行了四次完整的测试。无论如何,如果你需要它,你需要它。
  6. 安装/激活生产中的功能。

它比“在prod服务器上运行脚本”重要得多,但如果您正在寻找一种“更好”的方式来推进自定义,这是在SharePoint中执行此操作的正确方法。 SharePoint的功能和解决方案框架专为此场景而设计。

是的,我大量使用PowerShell进行原型设计/对象spelunking。

编辑:我没有提到,但你需要有一个灾难恢复计划,可以恢复所有的自定义设置。这是它开始疯狂的地方,取决于你所做的定制。在上面的示例中,内容数据库存储数据,但其他自定义设置在灾难恢复情况下并不容易恢复,尤其是在配置数据库中存储SSP和服务器场级自定义设置的情况下,或者修改了网络.config或IIS元数据库。

0

首先进行内容备份,然后运行脚本。

通过stsadm或数据库进行备份。

不适用于任何中央管理更改。

1

那么,如果你想自动化一些东西,PowerShell可能是最好的方法之一。您可以在尝试之前看到正在运行的实际命令(与编译时无法达到的内容相比)。

根据PowerShell脚本将要执行的操作,您可以经常使用简单的参数,例如-WhatIf和-Confirm来对cmdlet产生影响(删除,移动等)。

-WhatIf规定:指示运行命令时通常执行的动作的输出。你可以看到将要采取的行动。

确认:在实际执行操作之前,您基本上会被问到“您确定要执行xyz”。

随着-WhatIf,如果你的所有信息都在屏幕上滚动,你可以简单地使用Start-Transcript开始你的控制台会话的日志,然后你可以查看该日志仔细查看所有的行为拍摄。这样你可以在运行之前确保你的命令是正确的。