【问题标题】:Updating an exisiting Sharepoint View using Powershell使用 Powershell 更新现有的 Sharepoint View
【发布时间】: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


    【解决方案1】:

    不知道为什么这被否决了,但如果你还没有得到答案,这里就是答案。

    您的 $spView 字段中已有视图,因此只需调用以下方法

    $spView.ViewFields.Add("newfieldname1");
    $spView.ViewFields.Add("newfieldname2");
    
    //this can be a loop to add as many as you want
    
    $spView.ViewFields.Delete("Removefieldname1");
    
    //again can be a loop
    
    //then finish by calling the update method
    
    $spView.Update();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-21
      • 2013-01-27
      • 2011-12-31
      • 1970-01-01
      • 2015-07-19
      • 2021-07-08
      • 2018-06-29
      • 1970-01-01
      相关资源
      最近更新 更多