2016-08-22 116 views
0

我需要一個PowerShell(v2)腳本來讀取或複製駐留在遠程SharePoint服務器上的SharePoint庫中的文件。扭曲的是,我需要在文件的最後修改日期進行過濾。另外,運行腳本的服務器沒有安裝SharePoint。PowerShell讀取SharePoint庫文件

這是我已經試過:

  1. 使用帶有LastWriteTime過濾器的SP文件的UNC路徑Get-ChildItem。我遇到了延遲問題。如果我最近在網上打開了文檔庫,它運行良好。但是當計劃自行運行時,讀取一直失敗(無法找到文件)。

  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工具的安裝可能是一種選擇,但我無法弄清楚需要什麼。

還有其他方法可以解決這個問題嗎?

+0

您是否嘗試過使用New-PSDrive在會話中安裝位置,然後訪問文件(S)?我目前使用該方法安裝SharePoint窗體庫來讀取表單(XML文件)。它一直爲我工作。 –

+0

@Jon,或許,但我想我遇到了與上面#1中概述的相同的問題,因爲我正在使用UNC路徑訪問它。我可以嘗試。 – bvy

回答

0

你不能做什麼(服務器端對象模型)

Get-SPWeb cmdlet將只能從實際運行SharePoint作爲SharePoint場的一部分,Web前端服務器中的一個使用,所以如果你沒有登錄服務器的權限,那麼這個選項就沒有問題了。

你能做什麼(Web服務)

另外,公開的SharePoint,你可以用它來從遠程服務器訪問SharePoint數據(包括列數據)的Web服務。

可用的Web服務因您使用的SharePoint版本不同而異。

的列表Web服務

在SharePoint如果你願意撰寫自己的SOAP調用2013分之2010Lists.asmx Web服務可以被訪問。有關使用Powershell的示例,可以參考this answer。請參閱官方文檔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