使用SharePoint中的PowerShell从文档库中获取项目列表

时间:2016-08-18 07:14:47

标签: powershell sharepoint

因此,如果我有文档库的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。但我显然错了。

任何提示?

3 个答案:

答案 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文件。只想注意以下事项。

  1. 为此,您可以将通用https://url.com更改为试图从中获取结果的合法URL。
  2. 将Export-CSV -Path“ DesiredLocation”更改为实际文件路径(即c:\ users \ yourprofile \ desktop \ filename.csv
  3. 将CSV FileName更改为对您有意义的名称。