PowerShell kullanarak SharePoint'teki Belge Kitaplıkları Arasında Dosya Kopyalama
Gereksinim: PowerShell'i kullanarak Dosyaları SharePoint Belge Kitaplıkları arasında kopyalama
Bir Dosyayı Bir Kitaplıktan Diğerine Kopyalamak için PowerShell Komut Dosyası
Bu blog yazısında, PowerShell kullanarak SharePoint belge kitaplıkları arasında dosyaların nasıl kopyalanacağını göstereceğiz. Yedekleme veya arşivleme amacıyla dosyaları iki veya daha fazla belge kitaplığı arasında hızlı bir şekilde kopyalamak veya taşımak istiyorsanız bu yararlı olabilir.
Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
#Variables for Processing
$WebURL="https://portal.crescent.com/sites/Sales/"
$SourceFile="https://portal.crescent.com/sites/Sales/TeamDocs/InvoiceTemp.xlsx"
$TargetLibrary="Invoice Documents"
#Get Objects
$Web = Get-SPWeb $WebURL
$SourceFile = $Web.GetFile($SourceFile)
$TargetLibrary = $Web.GetFolder($TargetLibrary)
#Copy the file into the Target library
$File = $TargetLibrary.Files.Add($SourceFile.Name, $SourceFile.OpenBinary(), $true)
#Copy Meta-Data
$Item = $File.Item
$item["Created"] = $SourceFile.TimeCreated.ToLocalTime()
$item["Modified"] = $SourceFile.TimeLastModified.ToLocalTime()
$item["Author"] = $SourceFile.Author
$item["Editor"] = $SourceFile.ModifiedBy
#Update
$Item.UpdateOverwriteVersion()
Tüm Dosyaları Belge Kitaplıkları Arasında Kopyalamak için PowerShell Komut Dosyası:
Tüm dosya ve klasörleri meta verileriyle birlikte bir kitaplıktan diğerine kopyalayalım (yukarıdakiler hariç!)
Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
#Custom Function to Copy Files from Source Folder to Target
Function Copy-Files($SourceFolder, $TargetFolder)
{
write-host "Copying Files from:$($SourceFolder.URL) to $($TargetFolder.URL)"
#Get Each File from the Source
$SourceFilesColl = $SourceFolder.Files
#Iterate through each item from the source
Foreach($SourceFile in $SourceFilesColl)
{
#Copy File from the Source
$NewFile = $TargetFolder.Files.Add($SourceFile.Name, $SourceFile.OpenBinary(),$True)
#Copy Meta-Data from Source
Foreach($Field in $SourceFile.Item.Fields)
{
If(!$Field.ReadOnlyField)
{
if($NewFile.Item.Fields.ContainsField($Field.InternalName))
{
$NewFile.Item[$Field.InternalName] = $SourceFile.Item[$Field.InternalName]
}
}
}
#Update
$NewFile.Item.UpdateOverwriteVersion()
Write-host "Copied File:"$SourceFile.Name
}
#Process SubFolders
Foreach($SubFolder in $SourceFolder.SubFolders)
{
if($SubFolder.Name -ne "Forms")
{
#Check if Sub-Folder exists in the Target Library!
$NewTargetFolder = $TargetFolder.ParentWeb.GetFolder($SubFolder.Name)
if ($NewTargetFolder.Exists -eq $false)
{
#Create a Folder
$NewTargetFolder = $TargetFolder.SubFolders.Add($SubFolder.Name)
}
#Call the function recursively
Copy-Files $SubFolder $NewTargetFolder
}
}
}
#Variables for Processing
$WebURL="https://portal.crescent.com/sites/sales/"
$SourceLibrary ="Team Docs"
$TargetLibrary = "Sales Documents"
#Get Objects
$Web = Get-SPWeb $WebURL
$SourceFolder = $Web.GetFolder($SourceLibrary)
$TargetFolder = $Web.GetFolder($TargetLibrary)
#Call the Function to Copy All Files
Copy-Files $SourceFolder $TargetFolder
PowerShell kullanarak Klasörler Arasında Dosya Kopyalama
Belge kitaplıklarındaki Klasörler arasında dosya kopyalamak mı istiyorsunuz? $SoureLibrary ve $TargetLibrary parametre değerlerini Klasör URL'leri olarak değiştirmeniz yeterlidir. Örneğin.
#Relative Path of the Folder
$SourceLibrary ="/Documents/2017"
$TargetLibrary = "/Team Documents/Active/2018"
Siteler, Site Koleksiyonları, Web Uygulamaları Arasında Belge Kopyalama:
Siteler arasında kopyalamaya ne dersiniz? Peki, komut dosyasındaki aşağıdaki satırları değiştirmeniz yeterli.
#Variables for Processing
$SourceWebURL = "https://Your-Source-Web-URL"
$TargetWebURL = "https://Your-Target-Web-URL"
$SourceWeb = Get-SPWeb $SourceWebURL
$TargetWeb = Get-SPWeb $TargetWebURL
$SourceLibrary ="Team Docs"
$TargetLibrary = "Shared Documents"
$SourceFolder = $SourceWeb.GetFolder($SourceLibrary)
$TargetFolder = $TargetWeb.GetFolder($TargetLibrary)
#Call the Function to Copy All Files
Copy-Files $SourceFolder $TargetFolder
Dosyaları SharePoint belge kitaplıkları arasında taşımak için şunu kullanın: Dosyaları Meta Veri ve Sürüm Geçmişi ile Belge Kitaplıkları Arasında Taşıma
