【问题标题】:Listing files in SharePoint library without SharePoint module via Powershell通过 Powershell 在没有 SharePoint 模块的 SharePoint 库中列出文件
【发布时间】:2016-01-14 10:00:28
【问题描述】:

我们的 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 的共享点站点名称转换为基于 UNC (\...) 的名称,但这似乎只适用于我的 Windows 8 笔记本电脑...但在 Exchange 服务器上失败了。

有什么建议吗?

【问题讨论】:

    标签: sharepoint sharepoint-2010 powershell-2.0


    【解决方案1】:

    使用 New-WebServiceProxy 调用 Lists.asmx 网络服务。

    类似:

    $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 插件

    【讨论】:

      猜你喜欢
      • 2019-10-15
      • 2020-12-01
      • 2016-12-29
      • 2021-07-31
      • 2019-02-09
      • 1970-01-01
      • 2021-12-13
      • 1970-01-01
      • 2019-08-17
      相关资源
      最近更新 更多