2

このスクリプトのデバッグに問題があります。これは、SOに関する以前の質問に基づいており、ほぼ機能しています。

要件:スクリプトは、Webアプリケーション上の各ドキュメントライブラリをループし、「詳細」と呼ばれるビューを作成して、それをデフォルトビューとして設定します。

問題:サイトコレクションのループに失敗しているようです。最初のサイトコレクションとそのライブラリでビューが正常に作成されますが、後続のサイトコレクションでは失敗します。

うまくいけば、それは単純なものです。どんな助けでも大歓迎です。

ありがとう、

アシュリー

Add-PSSnapin Microsoft.SharePoint.PowerShell -erroraction SilentlyContinue

$siteURL = "http://dev1share"
$site = Get-SPSite($siteURL)

foreach($web in $site.AllWebs) {

$listCounter = $web.Lists.Count
for($i=0;$i -le $listCounter;$i++) {

    $list = $web.Lists[$i]
    if($list.BaseType -eq "DocumentLibrary") {
    $newList = $web.Lists.item($list.ID);


  $viewfields = New-Object System.Collections.Specialized.StringCollection 
  $viewfields.Add("DocIcon") 
  $viewfields.Add("LinkFilename") 
  $viewfields.Add("_UIVersionString") 
  $viewfields.Add("Modified") 
  $viewfields.Add("Created") 
  $viewfields.Add("Editor") 
  $viewfields.Add("FileSizeDisplay") 

  [void]$newList.Views.Add("Detailed", $viewfields, "", 100, $true, $true)
  $newList.Update();

  $view=$newList.Views["Detailed"]
  $view.DefaultView = $true
  $view.Update()
}
}

$web.Dispose();
}
$site.Dispose();
4

1 に答える 1

2

スクリプトは、と呼ばれる1つのサイトコレクションでのみループします[http://dev1share][1]

すべてのサイトコレクションをループする場合は、Sharepoint階層モデルの下位にあるSP-Siteではなく、Webアプリケーションオブジェクトを取得する必要があります。

Webアプリケーションオブジェクトを取得して反復するには、次のようなコードを使用します。

$webapplication = Get-SPWebApplication "Webapplication Name"
foreach($site in $webapp.Sites){
    foreach($web in $site.AllWebs){
        // Your script with creating views
    }
}
于 2012-07-10T18:01:50.343 に答える