2016-07-25 69 views
0

我需要使用特定網站列獲取所有列表的名稱。我有下面的代碼獲取使用特定網站列的所有列表的名稱

$web = Get-SPWeb "http://nameofsite/sites/subsite" 
$filePath = "E:\lists.txt" 
$array = "array of site column names" 

foreach ($element in $array) 
{ 
    $column = $web.Fields[$element] 
    $column.ListsFieldUsedIn() | Out- File -FilePath $filePath -Append 

} 

但它在做什麼是發送網絡ID和列表ID的文件。有沒有辦法讓$ column.ListsFieldUsedIn()返回的id返回列表的名字?

回答

0

您不能訪問字段屬性來自Web實例。

警告!未測試代碼...

 $site = Get-SPSite "http://nameofsite/sites/subsite" 
     $array = "array of site column names" 

     foreach($element in $array) 
     { 
      $field = $site.RootWeb.AvailableFields[SPBuiltInFieldId.Attachments]; 
      Write-Host "The $($field.Title) Field is used in: " 
      Write-Host "-->" 

      $collection = $field.ListsFieldUsedIn() 
      foreach($usage in $collection) 
      { 
       $web = $site.AllWebs[$usage.WebID] 
       $list = $web.Lists[$usage.ListID] 

       Write-Host "$($list.Title) list in $($web.Title)" 
       $web.Dispose() 
      } 
     } 

     $site.Dispose() 

MSDN example更多信息

+0

謝謝你的信息!我嘗試了上面的建議,並得到了與我在代碼中一樣的結果。我獲得了WWeb ID列表和列表ID的列表。這兩個代碼版本的id相同。我想知道的是,我可以如何獲得與這些列表ID相關的**列表名稱**。 – user2073183

+0

我更新了代碼,現在就試試 – Max

0

我落得這樣做:基於代碼

$site = Get-SPSite "http://nameofsite/sites/subsite" 
$filePath = "E:\lists.txt" 
$array = "array of site column names"  
$column = $site.RootWeb.AvailableFields[$element] 
$lists = $column.ListsFieldUsedIn() 
$column.ListsFieldUsedIn() | ForEach-Object { 
    $w = $site.AllWebs[$_.WebID] 
    $l = $w.Lists[$_.ListID] 
    "Web:" +$w.Title+ " List: " + $l.Title+ " ListUrl: " +$l.RootFolder.Url | Out-File -FilePath $filePath -Append 

    } 

我發現這裏sharepoint.stackexchange.com

相關問題