获取使用特定网站列的所有列表的名称
问题描述:
我需要使用特定网站列获取所有列表的名称。我有下面的代码获取使用特定网站列的所有列表的名称
$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返回列表的名字?
答
您不能访问字段属性来自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更多信息
答
我落得这样做:基于代码
$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
}
谢谢你的信息!我尝试了上面的建议,并得到了与我在代码中一样的结果。我获得了WWeb ID列表和列表ID的列表。这两个代码版本的id相同。我想知道的是,我可以如何获得与这些列表ID相关的**列表名称**。 – user2073183
我更新了代码,现在就试试 – Max