【发布时间】:2020-07-30 18:54:23
【问题描述】:
我们正在将文件服务器迁移到 SharePoint Online。我已经知道如何使用 SharePoint 迁移工具等将我们的整个驱动器上传到站点。然而,我们不想完全摆脱我们的文件服务器 (S:),因为许多内部应用程序依赖它来上传数据并且无法指向 Internet 站点。我们正在尝试使用 PowerShell 脚本将本地目录与 SharePoint 目录同步,以便在将新数据添加到 S:\ 驱动器时,SharePoint 网站可以保持更新。我们使用的脚本能够将整个文件夹复制到 SharePoint,但无法识别子文件夹,并且无法区分新文件和 SharePoint 上已有的文件。我们想要一个脚本,可以将我们的驱动器单向同步到站点,包括所有子文件夹和文件,但只上传新的或修改过的文件。我们也不想将 SharePoint 更改同步回服务器,因为我们正试图减少存储使用量。代码如下所示(带有位置的通用占位符):
if((Get-PSSnapin "Microsoft.SharePoint.PowerShell") -eq $null)
{
Add-PSSnapin Microsoft.SharePoint.PowerShell
}
#Script settings
$webUrl = "http://vs-server12"
$docLibraryName = "Documents"
$docLibraryUrlName = "Shared%20Documents"
$localFolderPath = "C:\temp\Docs4SharePoint"
#Open web and library
$web = Get-SPWeb $webUrl
$docLibrary = $web.Lists[$docLibraryName]
$files = ([System.IO.DirectoryInfo] (Get-Item $localFolderPath)).GetFiles()
ForEach($file in $files)
{
#Open file
$fileStream = ([System.IO.FileInfo] (Get-Item $file.FullName)).OpenRead()
#Add file
$folder = $web.getfolder($docLibraryUrlName)
write-host "Copying file " $file.Name " to " $folder.ServerRelativeUrl "..."
$spFile = $folder.Files.Add($folder.Url + "/" + $file.Name, [System.IO.Stream]$fileStream, $true)
write-host "Success"
#Close file stream
$fileStream.Close();
}
#Dispose web
$web.Dispose()
【问题讨论】:
标签: powershell sharepoint