在为编码的url调用ApplyWebConfigModifications作为值时获取异常

时间:2014-02-18 14:58:37

标签: sharepoint iis powershell sharepoint-2010 powershell-v2.0

我正在尝试使用powershell脚本为sharepoint web应用程序使用以下代码更新web.conig

$PublicWebApp = Get-SPWebApplication http://my_website                                                                  
$NewMod = New-Object Microsoft.SharePoint.Administration.SPWebConfigModification
$NewMod.name = "add[@key='STSSignInURL']"
$NewMod.path = "/configuration/appSettings"
$NewMod.value =  "<add key='STSSignInURL' value='https://mydomain:443/v2/wsfederation?wa=wsignin1.0&wtrealm=http%3a%2f%2ffra1fv-na%2f' />"
$NewMod.owner = "Owner"
$NewMod.sequence = 0
$NewMod.type = Microsoft.SharePoint.Administration.SPWebConfigModification+SPWebConfigModificationType]::EnsureChildNode
$PublicWebApp.WebConfigModifications.Add($NewMod)
$PublicWebApp.Update()
$PublicWebApp.Parent.ApplyWebConfigModifications()

但我得到例外:

使用“0”参数调用“ApplyWebConfigModifications”的异常:“=”是一个意外的令牌。

我设置的值是一个http编码的网址,我只会遇到编码网址的问题。对于其他纯文本,代码工作正常。 有没有解决方法呢?

2 个答案:

答案 0 :(得分:0)

mod的名称应该是这样的:

$NewMod.name = "add[@key='STSSignInURL'][@value]='https://mydomain:443/v2/wsfederation?wa=wsignin1.0&wtrealm=http%3a%2f%2ffra1fv-na%2f']"

答案 1 :(得分:0)

我想我找到了答案。问题出在&#34;&amp; wtrealm&#34;&amp; amp;使用[System.Security.SecurityElement] :: Escape()方法解决了这个问题。