Sharepoint 2013 SelectedRefinementControlsJson抛出错误
我正在尝试通过以下powershell脚本更新sharepoint 2013精简程序Web部件:Sharepoint 2013 SelectedRefinementControlsJson抛出错误,json,sharepoint-2013,powershell-3.0,Json,Sharepoint 2013,Powershell 3.0,我正在尝试通过以下powershell脚本更新sharepoint 2013精简程序Web部件: $spweb = Get-SPWeb "http://da-server/search/" $page = $spweb.GetFile("Pages/results.aspx") $page.CheckOut() # Find the Refinement web part $webPartManager = $spweb.GetLimitedWebPartManager("http://da-
$spweb = Get-SPWeb "http://da-server/search/"
$page = $spweb.GetFile("Pages/results.aspx")
$page.CheckOut()
# Find the Refinement web part
$webPartManager = $spweb.GetLimitedWebPartManager("http://da- server/search/Pages/results.aspx", [System.Web.UI.WebControls.WebParts.PersonalizationScope]::Shared)
$rwp = $webpartmanager.webparts | ? { $_.title -eq 'Refinement' }
# Refiners are updated by changing the JSON
$j = $rwp.SelectedRefinementControlsJson | ConvertFrom-Json
$j.refinerConfigurations | % { if ($_.propertyName -eq 'LastModifiedTime') { $_.displayName = 'Mod Time'; }
**$rwp.SelectedRefinementControlsJson = ConvertTo-Json $j -Compress** This line throwing the error.
# Save our changes
$webpartmanager.SaveChanges($rwp) # save changes to webpart
$page.CheckIn('Changed last mod refiner')
$page.Publish('Changed last mod refiner')
上面突出显示的第10行抛出以下错误:
Exception setting "SelectedRefinementControlsJson": No parameterless constructor defined for type of 'Micrososft.Office.Server.Search.WebControls.RefinementControl[]'"
我猜您在一个或多个精炼厂中只定义了一个别名。在本例中,PS ConvertTo Json函数将数组转换为字符串。更多详情请参见此处 当我与同样的问题斗争时,这里是我的解决方案
Function ConvertTo-Json {
param($inputObject)
if ($inputObject -eq $null) { "null" }
else {
switch ($inputObject.GetType().Name) {
"String" { '"' + $inputObject +'"' }
"Boolean" {
if($inputObject){
"true"
}
else {
"false"
}
}
"Object[]" {
$items = @()
$inputObject | % {
$items += ConvertTo-Json $_
}
$ofs = ","; "[" + [string]$items + "]"
}
"PSCustomObject" {
$properties = @()
$inputObject | Get-Member -MemberType *Property | % {
$properties += '"'+ $($_.Name) + '":' + $(ConvertTo-Json $inputObject.($_.Name))
}
$ofs = ","; "{" + [string]$properties + "}"
}
default { $inputObject }
}
}
}
现在它可以像以前一样使用,但是没有-Compress参数
$rwp.SelectedRefinementControlsJson = ConvertTo-Json $j
我猜您在一个或多个精炼厂中只定义了一个别名。在本例中,PS ConvertTo Json函数将数组转换为字符串。更多详情请参见此处 当我与同样的问题斗争时,这里是我的解决方案
Function ConvertTo-Json {
param($inputObject)
if ($inputObject -eq $null) { "null" }
else {
switch ($inputObject.GetType().Name) {
"String" { '"' + $inputObject +'"' }
"Boolean" {
if($inputObject){
"true"
}
else {
"false"
}
}
"Object[]" {
$items = @()
$inputObject | % {
$items += ConvertTo-Json $_
}
$ofs = ","; "[" + [string]$items + "]"
}
"PSCustomObject" {
$properties = @()
$inputObject | Get-Member -MemberType *Property | % {
$properties += '"'+ $($_.Name) + '":' + $(ConvertTo-Json $inputObject.($_.Name))
}
$ofs = ","; "{" + [string]$properties + "}"
}
default { $inputObject }
}
}
}
现在它可以像以前一样使用,但是没有-Compress参数
$rwp.SelectedRefinementControlsJson = ConvertTo-Json $j
我猜您在一个或多个精炼厂中只定义了一个别名。在本例中,PS ConvertTo Json函数将数组转换为字符串。更多详情请参见此处 当我与同样的问题斗争时,这里是我的解决方案
Function ConvertTo-Json {
param($inputObject)
if ($inputObject -eq $null) { "null" }
else {
switch ($inputObject.GetType().Name) {
"String" { '"' + $inputObject +'"' }
"Boolean" {
if($inputObject){
"true"
}
else {
"false"
}
}
"Object[]" {
$items = @()
$inputObject | % {
$items += ConvertTo-Json $_
}
$ofs = ","; "[" + [string]$items + "]"
}
"PSCustomObject" {
$properties = @()
$inputObject | Get-Member -MemberType *Property | % {
$properties += '"'+ $($_.Name) + '":' + $(ConvertTo-Json $inputObject.($_.Name))
}
$ofs = ","; "{" + [string]$properties + "}"
}
default { $inputObject }
}
}
}
现在它可以像以前一样使用,但是没有-Compress参数
$rwp.SelectedRefinementControlsJson = ConvertTo-Json $j
我猜您在一个或多个精炼厂中只定义了一个别名。在本例中,PS ConvertTo Json函数将数组转换为字符串。更多详情请参见此处 当我与同样的问题斗争时,这里是我的解决方案
Function ConvertTo-Json {
param($inputObject)
if ($inputObject -eq $null) { "null" }
else {
switch ($inputObject.GetType().Name) {
"String" { '"' + $inputObject +'"' }
"Boolean" {
if($inputObject){
"true"
}
else {
"false"
}
}
"Object[]" {
$items = @()
$inputObject | % {
$items += ConvertTo-Json $_
}
$ofs = ","; "[" + [string]$items + "]"
}
"PSCustomObject" {
$properties = @()
$inputObject | Get-Member -MemberType *Property | % {
$properties += '"'+ $($_.Name) + '":' + $(ConvertTo-Json $inputObject.($_.Name))
}
$ofs = ","; "{" + [string]$properties + "}"
}
default { $inputObject }
}
}
}
现在它可以像以前一样使用,但是没有-Compress参数
$rwp.SelectedRefinementControlsJson = ConvertTo-Json $j
尝试
converttojson$j-Depth 3
开箱即用,
修改者
属性具有多个别名,并且是嵌套级别。默认情况下,转换为Json
只能达到2级。因此,您必须使用-depth
来正确转换它 尝试转换为Json$j-Depth 3
开箱即用,
修改者
属性具有多个别名,并且是嵌套级别。默认情况下,转换为Json
只能达到2级。因此,您必须使用-depth
来正确转换它 尝试转换为Json$j-Depth 3
开箱即用,
修改者
属性具有多个别名,并且是嵌套级别。默认情况下,转换为Json
只能达到2级。因此,您必须使用-depth
来正确转换它 尝试转换为Json$j-Depth 3
开箱即用,修改者
属性具有多个别名,并且是嵌套级别。默认情况下,转换为Json
只能达到2级。因此,您必须使用-depth
来正确转换它