【问题标题】:Powershell to Read SharePoint Library FilesPowershell 读取 SharePoint 库文件
【发布时间】:2016-12-29 07:06:09
【问题描述】:

我需要一个 PowerShell (v2) 脚本来读取或复制驻留在远程 SharePoint 服务器上的 SharePoint 库中的文件。扭曲的是,我需要过滤文件的最后修改日期。此外,运行脚本的服务器没有安装 SharePoint。

这是我尝试过的:

  1. Get-ChildItem 使用带有 LastWriteTime 过滤器的 SP 文件的 UNC 路径。我遇到了延迟问题。如果我最近在网络上打开了文档库,它运行良好。但是当计划自行运行时,读取始终失败(找不到文件)。

  2. 使用以下脚本复制文件。问题是修改日期在复制到目标机器时会丢失。添加/修改的日期现在是复制日期。

    $target = "http://myspweb.com/myfile.xlsx"
    $dest   = "D:\library\newfile.xlsx"
    $wc = New-Object System.Net.WebClient
    $wc.UseDefaultCredentials = $true
    $wc.DownloadFile($target, $dest)
    
  3. 使用 Get-SPWeb 命令。据称,这会暴露文件的属性,包括上次修改日期,但似乎要求运行脚本的服务器安装了 SharePoint(Add-PSSnapin Microsoft.Sharepoint.Powershell 给出“未安装在这台机器上”错误。)完整的SharePoint 安装不是一个真正的选择——远程处理也不是。一些 SP 工具的安装可能是一种选择,但我不知道需要什么。

还有其他方法可以解决这个问题吗?

【问题讨论】:

  • 您是否尝试过使用 New-PSDrive 在会话中挂载该位置,然后访问文件?我目前使用该方法安装 SharePoint 表单库以读取表单(XML 文件)。它对我来说始终如一。
  • @Jon,也许,但我想我遇到了与上面#1 中概述的相同的问题,因为我正在使用 UNC 路径访问它。不过我可以试试。

标签: powershell sharepoint powershell-2.0


【解决方案1】:

你不能做什么(服务器端对象模型)

Get-SPWeb cmdlet 只能从作为 SharePoint 场的一部分实际运行 SharePoint 的 Web 前端服务器之一使用,因此,如果您无权登录服务器,则该选项为马上。

您可以做什么(网络服务)

或者,SharePoint 公开 Web 服务,您可以使用这些服务从远程服务器访问 SharePoint 数据(包括列数据)。

可用的 Web 服务因您使用的 SharePoint 版本而异。

列表网络服务

如果您愿意编写自己的 SOAP 调用,则可以访问 SharePoint 2010/2013 Lists.asmx Web 服务。您可以参考this answer 了解使用 Powershell 的示例。参考官方文档here

您可以格式化您的查询,使其仅返回具有特定修改日期的结果(使用 CAML 查询语法),或者您可以返回所有结果并在 Powershell 中处理它们以选择那些你在乎。

REST API

SharePoint 2013 还具有您可以使用的基于 REST 的 Web 服务。 (从技术上讲,SharePoint 2010 也可以,但有点半生不熟。)下面是一个使用 Powershell 和 REST API 的示例:https://gallery.technet.microsoft.com/office/How-to-Get-all-the-Lists-a0af6259

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-17
    • 1970-01-01
    • 2013-12-12
    • 2017-01-13
    • 1970-01-01
    • 2016-01-14
    • 1970-01-01
    相关资源
    最近更新 更多