此脚本应循环遍历每个站点上的每个文档库,并将名为“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()
答案 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()