Sharepoint online - Powershell - Переименовать \ Переместить файл
Мы используем точку общего доступа в Интернете как часть нашего офиса 365 (мои сценарии не запускаются с самого сервера sharepoint). Я хочу переименовать \ переместить файлы в точке общего доступа после того, как я закончу их обработку. Я нашел способ загрузить файл на свой компьютер, но я не могу найти способ переименовать файл или переместить его в другой каталог на сайте.
Окружающая среда: Sharepoint online 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 ответа
Метод File.MoveTo перемещает файл по указанному целевому URL.
В следующем примере показано, как перемещать файлы из одной папки в другую в библиотеке с помощью CSOM в PowerShell.
пример
$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()
}
}
Есть метод 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
Перепишите его в powershell, используя тот же подход, что и в коде GetItems.