Sharepoint online - Powershell - 重命名\移动文件

时间:2014-05-11 06:41:47

标签: powershell sharepoint file-rename

我们使用在线共享点作为我们办公室365的一部分(我的脚本不是从sharepoint服务器本身运行的)。我想重命名\在我完成处理后在共享点移动文件。我找到了将文件下载到我的电脑的方法,但我似乎无法找到重命名文件或将其移动到网站中不同目录的方法。

环境:在线Sharepoint Powershell:Powershell 3.0

我使用以下代码获取项目列表

`$ctx = New-Object Microsoft.SharePoint.Client.ClientContext($siteUrl)
 $ctx.Credentials = $credentials
 $list = $ctx.Web.Lists.GetByTitle('Documents')
 $camlQuery = New-Object Microsoft.SharePoint.Client.CamlQuery
 $camlQuery.ViewXml = '<View Scope="RecursiveAll">
                        <Query>
                            <Where>
                                <And>
                                    <Contains>
                                        <FieldRef Name="FileDirRef" />
                                        <Value Type="Text">' + $path+ '</Value>
                                    </Contains>
                                    <Eq>
                                        <FieldRef Name="File_x0020_Type" />
                                        <Value Type="Text">XLS</Value>
                                    </Eq>
                                </And>
                            </Where>
                        </Query>
                    </View>'


Write-Host $camlQuery.ViewXml

#$camlQuery.FolderServerRelativeUrl="/Doron";
$items = $list.GetItems($camlQuery)
$ctx.Load($items)
$ctx.ExecuteQuery()`

但无法找到重命名文件或将其移至其他目录的方法。

你能告诉我吗?

由于 多伦

2 个答案:

答案 0 :(得分:3)

File.MoveTo method将文件移动到指定的目标网址。

以下示例演示了如何使用PowerShell中的CSOM将文件从库中的一个文件夹移动到另一个文件夹。

实施例

$listTitle = "Documents"
$sourceFolder = "/Shared Documents/Archive"
$destFolder = "/Shared Documents/Archive/06"


$ctx = New-Object Microsoft.SharePoint.Client.ClientContext($Url)
$credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($UserName,$SecurePassword)
$ctx.credentials = $credentials

#Load items
$list = $ctx.Web.Lists.GetByTitle($listTitle)
$query = [Microsoft.SharePoint.Client.CamlQuery]::CreateAllItemsQuery()
$query.FolderServerRelativeUrl=$sourceFolder;
$items = $list.GetItems($query)
$ctx.Load($items)
$ctx.ExecuteQuery()


#Move file(s)
foreach ($item in $items){

  if($item.FileSystemObjectType -eq [Microsoft.SharePoint.Client.FileSystemObjectType ]::File) { 

     $destFileUrl = $item["FileRef"].ToString().Replace($sourceFolder,$destFolder)
     $item.File.MoveTo($destFileUrl, [Microsoft.SharePoint.Client.MoveOperations]::Overwrite)
     $ctx.ExecuteQuery()
  }
}

答案 1 :(得分:0)

有一个方法File.MoveTo: http://msdn.microsoft.com/en-us/library/office/microsoft.sharepoint.client.file.moveto%28v=office.15%29.aspx

这里也讨论过: https://sharepoint.stackexchange.com/a/97057

通过与GetItems代码中相同的方法将其重写为powershell。