2009-02-01 93 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開始你的控制檯會話的日誌,然後你可以查看該日誌仔細查看所有的行爲拍攝。這樣你可以在運行之前確保你的命令是正確的。