在一個名爲AddWebConfigMods.ps1
文件將這個
Param ($weburl, $WebConfigModifications)
$url = New-Object System.Uri($webUrl)
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint") | Out-Null
$webApp = [Microsoft.SharePoint.Administration.SPWebApplication]::Lookup($url)
#delete mods by the owners being added
$ownerstodelete = $WebConfigModifications | Group-Object owner | Select-Object Name
foreach($owner in $ownerstodelete)
{
$modstodelete = @()
foreach($mod in $webApp.WebConfigModifications)
{
if($mod.Owner -eq $owner.Name)
{
$modstodelete += $mod
}
}
Write-Host ("Deleting " + $modstodelete.Count + " mods for owner: " + $owner)
foreach($delmod in $modstodelete)
{
Write-Host (" + Deleting " + $delmod.Value)
$webApp.WebConfigModifications.Remove($delmod) | Out-Null
}
}
#this is where we start to add mods
$i = 0;
Write-Host ("Adding " + $WebConfigModifications.Count + " webconfig modifications to " + $weburl)
foreach($modEntry in $WebConfigModifications)
{
Write-Host (" + Adding " + $modEntry.Value)
$mod = New-Object Microsoft.SharePoint.Administration.SPWebConfigModification
$mod.Path = $modEntry.Path
$mod.Name = $modEntry.Name
$mod.Sequence = $i++
$mod.Owner = $modEntry.Owner
$mod.Type = $modEntry.Type
$mod.Value = $modEntry.Value
$webApp.WebConfigModifications.Add($mod)
}
$webApp.Update()
$webApp.WebService.ApplyWebConfigModifications()
然後創建與你的configs一個CSV文件,像這樣
Name,Path,Owner,Type,Value
system.serviceModel,configuration,alinean-common,EnsureSection,<system.serviceModel/>
connectionStrings,configuration,alinean-common,EnsureSection,<connectionStrings />
appSettings,configuration,alinean-common,EnsureSection,<appSettings />
serviceHostingEnvironment,configuration/system.serviceModel,alinean-common,EnsureChildNode,<serviceHostingEnvironment aspNetCompatibilityEnabled='true'/>
然後在另一個PS1腳本,最好你用它來部署一個您的解決方案,導入csv config選項並調用在第一個代碼塊中創建的函數:
關於你的補充文件沒有被應用到web.config中: 從MSDN(http://msdn.microsoft.com/en-us/library/ms439965.aspx): 「你可以追溯適用修改運行copyappbincontent Stsadm命令行操作的服務器的web.config文件,必須在部署中的每個前端Web服務器上運行該操作。 – 2010-08-13 15:42:19
@Jason Weber - 就是這樣,運行'stsadm -o copyappbincontent'是缺失的一塊......我想我在文檔中查看該行。如果你想補充說,作爲答案,我會給你這個問題的功勞。 – 2010-08-13 16:37:28