SharePoint 2010循环,为每个库视图添加新的视野

时间:2012-08-16 15:11:00

标签: sharepoint powershell

此脚本应循环遍历每个站点上的每个文档库,并将名为“CheckoutUser”的viefield添加到默认视图中。 问题是脚本仅将字段添加到每个站点中的第一个库,跳过所有其他库并继续到下一个站点。

我需要帮助来解决这个问题, 谢谢,安娜

$site = Get-SPSite "http://sharepoint"

$site | Get-SPWeb -limit all | ForEach-Object {

    $_.Lists |  where  {$_.BaseType -eq "DocumentLibrary"} | ForEach-Object { 

        $view = $_.DefaultView

        $view.ViewFields.add("CheckoutUser")

        $view.Update()
    }
}

$site.Dispose()

1 个答案:

答案 0 :(得分:1)

试试这个:

$site = Get-SPSite "http://sharepoint"
$column = "CheckoutUser"

$site | Get-SPWeb -limit all | ForEach-Object {

    # Get all document libraries
    $lists = $_.Lists | where  {$_.BaseType -eq "DocumentLibrary"}

    # Loop libraries
    for ($i = 0; $i -lt $lists.Count; $i++)
    { 
        try
        {
            # Get current view
            $view = $lists[$i].DefaultView

            if($view) 
            {
                # Delete if already exist
                while($view.ViewFields.ToStringCollection().Contains($column))
                {
                    $view.ViewFields.delete($column)

                    $view.Update()
                }

                # Add column
                if(!$view.ViewFields.ToStringCollection().Contains($column))
                {     
                    $view.ViewFields.add($column)

                    $view.Update()
                }
            }
        }
        catch [Exception]
        {
            write-output ("  Error: " + $_.Exception.ToString())
        }
    }
}

$site.Dispose()