Powershell读取SharePoint库文件

时间:2016-08-22 16:27:57

标签: powershell sharepoint powershell-v2.0

我需要一个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提供了一个"未安装在此机器上#34;错误。)完整的SharePoint安装并非真正的选择 - 也不是远程安装。某些SP工具的安装可能是一种选择,但我无法弄清楚需要什么。

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

1 个答案:

答案 0 :(得分:0)

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

Get-SPWeb cmdlet只能用于其中一个实际运行SharePoint的Web前端服务器作为SharePoint场的一部分,因此如果您无权登录服务器,那么选项就出来了。

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

或者,SharePoint公开了可用于从远程服务器访问SharePoint数据(包括列数据)的Web服务。

可用的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