首页 文章

通过Powershell在没有SharePoint模块的SharePoint库中列出文件

提问于
浏览
0

我们在Exchange服务器(Exchange 2010 / Win 2008 R2)上运行了powershell脚本,该脚本需要在SharePoint 2013中查询SharePoint文档库,以查找每天名称可能不同的文件 . 例如,

Stats_2015_10_14_06_00_01.csv或Stats_2015_10_15_06_05_01.csv

这使我无法对文件名进行硬编码,并使用System.Net.WebClient方法在本地下载文件 .

我也没有在Exchange服务器上安装SharePoint模块,当然管理员也不想安装它 .

我尝试将基于HTTPS的sharepoint站点名称转换为基于UNC(\ ...)的名称,但这似乎只能在我的Windows 8笔记本电脑上运行...但在Exchange服务器上失败了 .

有什么建议?

1 回答

  • 2

    使用New-WebServiceProxy调用Lists.asmx webservice .

    就像是:

    $listname = "Documents" 
    $query = "<Query>
                  <Where>
                     <Lt>
                         <FieldRef Name="ID" />
                         <Value Type="Counter">3</Value>
                     </Lt>
                  </Where>
              </Query>"
    $queryOptions = ""
    $Credentials = Get-Credential
    $Ws = New-WebServiceProxy -Uri "Http://mysharepoint.com/mysite/_vti_bin/lists.asmx" -namespace WebServiceProxy -class lists -Credential $Credentials
    [xml]$list = $Ws.GetListItems($listName, "", $query, "", 1000, $queryOptions, null)
    

    Lists.Asmx调用的参考:https://msdn.microsoft.com/en-us/library/office/websvclists.lists.getlistitems.aspx

    您现在有一个对象包含列表中所有项目的XML(基于您的查询) . 然后,您应该能够遍历该XML数据以查找您的文件名,然后使用System.Net.WebClient直接下载,因为您现在将拥有该路径 .

    或者,您可能会说服您的系统管理员让您将Microsoft.Sharepoint.Dll库安装到您的Exchange服务器中 . 然后,您可以使用powershell导入它并获取您习惯的所有常规SP数据结构(spsite,Splistitem等),而无需安装完整的Sharepoint Management shell插件

相关问题