В одном из клиентских сценариев понадобилось настроить автоматическое копирование файлов и папок из библиотеки SharePoint Online в каталог на локальном файловом сервере.
Предпочтительным способом синхронизации файлов из библиотеки SharePoint Online является использования клиента OneDrive (OneDrive позволяет синхронизировать файлы из указанной библиотеки SharePoint), однако это требует наличия активной сессии пользователя Microsoft 365 и лицензии для пользователя. В этой статье мы рассмотрим PowerShell скрипт для копирования (синхронизации) файлов из библиотеки SharePoint в локальной хранилище на on-premises Windows Server.
Задание копирования файлов из SharePoint Online должно запускаться автоматически из планировщика на одном из хостов Windows Server. Для этого нужно:
Files.Read.All
и User.Read
) и SharePoint ( Sites.FullControl.All
, User.Read.All
, Sites.Read.All
, Sites.Selected
и TermStore.Read.All
); Создайте переменные для скрипта и подставьте в них свои данные:
$certThumbprint = "7E82C3A560737C7894562593926E495777ECDB75"_x000D_$AzureAppID = "123456-1234-1234-1234-123456789"_x000D_$tenant="remontka.onmicrosoft.com"_x000D_
Параметры сайта и библиотеки SharePoint, файлы из которой вы будете копировать:
$siteUrl = "https://remontka.sharepoint.com/sites/SyncLibrary"_x000D_$LibraryFolder = "/Shared Documents/General"_x000D_
Путь к целевой локальной папке, в которую нужно копировать файлы:
$localFolderPath = "\fs01DocsSharePoint"
Путь к файлу лога:
$Logfile = $localFolderPath + "sharepoint_sync_sync.log"
Создайте PowerShell функцию, которая будет писать лог :
function WriteLog_x000D_{_x000D_ Param ([string]$LogString)_x000D_ $Stamp = (Get-Date).toString("yyyy/MM/dd HH:mm:ss")_x000D_ $LogMessage = "$Stamp $LogString"_x000D_ Add-content $LogFile -value $LogMessage_x000D_}_x000D_WriteLog "Script started....."_x000D_
Для подключения к SharePoint Online нужно установить модуль PnP:
Install-Module PnP.PowerShell
Подключитесь к SharePoint Online с помощью команду:
Connect-PnPOnline -Url $siteUrl -ApplicationId $AzureAppID -Tenant $tenant -Thumbprint $certThumbprint
Следующий этап необходимы для корректной синхронизации. Нужно удалить в локальном хранилище файлы, которые были ранее удалены на сайте SharePoint (проверяется наличие файлы в корзине SPO):
$removedobjects= Get-PnPRecycleBinItem|select Title, DirName ,ItemType,DeletedDate _x000D_ foreach ($removedobject in $removedobjects) {_x000D_ $removedpath= $removedobject.DirName -replace 'sites/remontka/Shared Documents/General', ''_x000D_ $removedpath = $removedpath -replace '/', ''_x000D_ $removedpath = $localFolderPath + $removedpath + "" + $removedobject.Title_x000D_ If (Test-Path -Path $removedpath) {_x000D_ WriteLog ""Object existsneed to delete: $removedpath"" _x000D_ Remove-Item -Path $removedpath -Recurse -Force_x000D_ }_x000D_ }_x000D_
Получить все объекты (файлы и папки в библиотеке SharePoint):
$files= Get-PnPFolderItem -FolderSiteRelativeUrl $LibraryFolder -Connection $Connection -Recursive|select NameServerRelativeUrl
Клиент удаленного рабочего стола (rdp) предоставляет нам возможность войти на сервер терминалов через консоль. Что…
В VMware Workstation есть несколько способов настройки сети гостевой машины: 1) Bridged networking 2) Network…
Встроенный брандмауэр Windows может не только остановить нежелательный трафик на вашем пороге, но и может…
Вопреки распространенному мнению, отключить IPv6 в Windows Vista и Server 2008 это не просто снять…
Параметры экранной заставки для текущего пользователя можно править из системного реестра, для чего: Запустите редактор…
В этой статье расскажу про возможность просмотра журналов событий из командной строки. Эти возможности можно…