首页 文章

Powershell读取SharePoint库文件

提问于
浏览
0

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

这是我尝试过的:

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

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

$target = "http://myspweb.com/myfile.xlsx"
$dest   = "D:\library\newfile.xlsx"
$wc = New-Object System.Net.WebClient
$wc.UseDefaultCredentials = $true
$wc.DownloadFile($target, $dest)
  • 使用Get-SPWeb命令 . 据称,这会暴露文件的属性,包括上次修改日期,但似乎要求运行脚本的服务器安装了SharePoint(Add-PSSnapin Microsoft.Sharepoint.Powershell提供“未安装在此计算机上”错误 . )完整SharePoint安装实际上不是一个选项 - 也不是远程安装 . 某些SP工具的安装可能是一种选择,但我无法弄清楚需要什么 .

任何其他方法来解决这个问题?

1 回答

  • 0

    What you can't do (server-side object model)

    Get-SPWeb cmdlet只能用于实际运行SharePoint的Web前端服务器之一作为SharePoint场的一部分,因此,如果您无权登录服务器,则该选项即将完成 .

    What you can do (web services)

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

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

    The Lists Web Service

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

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

    The REST API

    SharePoint 2013还具有基于_397309的Web服务,您可以使用它 . (从技术上讲,SharePoint 2010也可以,但它是使用Powershell和REST API的一个例子:https://gallery.technet.microsoft.com/office/How-to-Get-all-the-Lists-a0af6259

相关问题