2016-07-25 38 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

相关问题