因此,如果我有文档库的URL,我如何从库中获取所有项目(在本例中为文件夹)?我尝试了一些不同的东西,但我似乎无法得到它。
这是我到目前为止所尝试的:
$web = Get-SPWeb($completeUrl)
$spDocumentLibrary = $completeUrl + "/DocumentLibrary"
$spSite = Get-SPSite -Identity http://url.com
$website = $spSite.OpenWeb()
$listItem = $website.GetListItem($completeUrl)
它以Exception calling "GetListItem" with "1" argument(s)...
我不能确定从哪里开始。我感兴趣的是获取文档库中的所有文件夹,我知道这些文件夹位于$completeUrl + /DocumentLibrary
,例如http://url.com/../../DocumentLibrary
。但我显然错了。
任何提示?
答案 0 :(得分:3)
这将打印出文档库的所有文件夹名称:
Add-PSSnapin Microsoft.SharePoint.Powershell -ErrorAction SilentlyContinue
$web = Get-SPWeb 'http://urltoyourweb'
$list = $web.Lists['DocumentLibrary']
function ListFolders($folder) {
Write-Host $folder.Name
$folder.Subfolders | % { if( $_.item -ne $null) { ListFolders $_}}
}
ListFolders $list.RootFolder
说明:
ListFolders是一个函数,如果子文件夹不为null,则调用自身。这称为递归函数。现在,我们为它提供SPList的根文件夹,然后遍历其子文件夹集合(%
是For-Each
的缩写)
如果这是太多的内联管道,您可以随时编写更易读的版本:
##Same as $folder.Subfolders | % { if( $_.item -ne $null) { ListFolders $_}}
foreach($sfolder in $folder.SubFolders)
{
if ($sfolder.item -ne $null)
{
ListFolders $sfolder
}
}
答案 1 :(得分:2)
我不知道您的SharePoint库构造,但是,从我的角度来看,您缺少列表选择。
$spDocumentLibrary = $completeUrl + "/DocumentLibrary"
$spSite = Get-SPSite -Identity http://url.com
$website = $spSite.OpenWeb()
$list = $website.Lists["List_Name_Here"]
$items = $list.GetItems()
答案 2 :(得分:0)
所以我要做的是最后调用$ items以获取结果。我最初以为$list.GetItems()
将返回项目列表。
所以我的脚本如下:
Add-PSSnapin Microsoft.SharePoint.PowerShell
$spDocumentLibrary = $completeUrl + "/DocumentLibrary"
$spSite = Get-SPSite -Identity https://url.com
$website = $spSite.OpenWeb()
$list = $website.Lists["List_Name_Here"]
$items = $list.GetItems()
$items | select -property Title,DisplayName,Url | `
Export-CSV -Path "\\DesiredLocation\file.csv" -NoTypeInformation
如您所见,我将结果通过管道传输到CSV文件。只想注意以下事项。