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

时间:2015-10-15 19:40:05

标签: sharepoint sharepoint-2010 powershell-v2.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 个答案:

答案 0 :(得分: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插件