这是由@marek-grzenkowicz 非常友好地处理的另一个查询。
问题 1)脚本在运行时生成错误。有人提到您不能修改正在枚举的集合的元素。你能告诉我如何解决这个问题吗?尽管进行了更改以避免该问题,但它仍在发生
An error occurred while enumerating through a collection: Collection was modified; enumera tion operation may not execute.. At C:\Users\quickdev1\Documents\LoopThroughAl lLibrariesCreateView.ps1:7 char:10
+ foreach <<<< ($list in $web.Lists) {
+ CategoryInfo : InvalidOperati on: (Microsoft.Share...on+SPEnumerator:S PEnumerator) [], RuntimeException
+ FullyQualifiedErrorId : BadEnumeration
问题 2)我想输入一些逻辑来检查现有视图是否已经存在,名称为“详细”,如果是,则跳过该库,但我不知道如何实现它。
如果有人可以提供帮助,那就太棒了。
谢谢,
阿什利
完整脚本
Add-PSSnapin Microsoft.SharePoint.PowerShell -erroraction SilentlyContinue
$siteURL = "http://sp14fdev01/"
$site = Get-SPSite($siteURL)
foreach($web in $site.AllWebs) {
foreach($list in $web.Lists) {
if($list.BaseType -eq "DocumentLibrary") {
// the variables `$web` and `$list` already reference the objects you need
//$site = New-Object Microsoft.SharePoint.SPSite($SiteURL) ;
//$web = $site.OpenWeb($SiteURL);
// new instance of the list is necessary to avoid the error "Collection was modified"
$newList = $web.Lists.item($list.ID);
$viewfields = New-Object System.Collections.Specialized.StringCollection
$viewfields.Add("DocIcon")
$viewfields.Add("LinkFilename")
$viewfields.Add("_UIVersionString")
$viewfields.Add("FileSizeDisplay")
$viewfields.Add("Created")
$viewfields.Add("Modified")
$viewfields.Add("Editor")
[void]$newList.Views.Add("Detailed", $viewfields, "", 100, $true, $true)
$newList.Update();
// setting the default view
$view=$newList.Views["Detailed"]
$view.DefaultView = $true
$view.Update()
}
}
$web.Dispose();
}
$site.Dispose();