【发布时间】:2015-12-01 00:20:30
【问题描述】:
我正在使用 PowerShell 在 SharePoint 2010 中创建/更新标准视图。 我创建了一个包含视图信息的 XML 文件,并在 powershell 中使用以下函数基于 xml 文件创建视图。
该功能非常适合添加新视图,但我要添加的是,如果视图已经存在,请使用 xml 文件中的信息对其进行更新。
所以基本上,创建视图,否则更新它们。
ForEach($xmlView in $xml.Root.Views.SelectNodes("View"))
{
$title = Get-XmlElement-Text $xmlView.SelectSingleNode("Title");
$spView = $lib.Views[$title];
if($spView -eq $null)
{
$Error.Clear(); #Need to clear Errors to handle non terminating errors
$defaultView = Get-XmlElement-Text $xmlView.SelectSingleNode("DefaultView");
if($defaultView -ne $null)
{
$defaultView = [boolean]::parse($defaultView);
}
else
{
$defaultView = $false
}
$rowLimit = Get-XmlElement-Text $xmlView.SelectSingleNode("RowLimit");
if($rowLimit -eq $null)
{
$rowLimit = 100;
}
$paged = Get-XmlElement-Text $xmlView.SelectSingleNode("Paged");
if($paged -ne $null)
{
$paged = [boolean]::parse($paged);
}
else
{
$paged = $true
}
$sortFilter = $xmlView.SelectSingleNode("SortFilter").InnerXML;
$viewFields = New-Object System.Collections.Specialized.StringCollection;
foreach($xmlField in $xmlView.ViewFields.SelectNodes("Field"))
{
$f = Get-XmlElement-Text $xmlField
if($f -ne $null -and $lib.Fields.ContainsField($f) -eq $true)
{
$viewFields.Add($f) > $null;
}
else
{
Write-Error "failed to find field: [$f] in library: [$lib]";
break;
}
}
if($Error.Count -eq 0)
{
$lib.Views.Add($title, $viewFields, $sortFilter, $rowLimit, $paged, $defaultView) > $null;
Write-Verbose "Added view: [$title] to libary $($lib.title)" -verbose;
}
else
{
Write-Warning "Failed to add view: [$title] to libary $($lib.title)";
}
}
else
{
Write-Host "Duplicate view found: [$spView]";
#If View already exists, update instead
}
}
【问题讨论】:
标签: xml powershell sharepoint sharepoint-2010