PowerShell kullanarak SharePoint Online'dan Klasör Nasıl İndirilir?
Gereksinim: SharePoint Online'dan bir Klasör indirin.
SharePoint Online'dan Klasör Nasıl İndirilir?
SharePoint Online'dan nasıl klasör indireceğinizi merak mı ediyorsunuz? Peki, bu yazı size nasıl yapılacağını gösterecek! Yalnızca birkaç kolay adımda, bilgisayarınızdaki bir SharePoint klasörünün içeriğine sahip olabilirsiniz. Bu blog yazısında size SharePoint Online'dan bir klasörü nasıl indireceğinizi (ve içindeki dosyaları indireceğinizi!) göstereceğiz.
En azından okuma izinlerine sahip olduğunuzu varsayarak, SharePoint Online'dan bir klasör indirmek için şu adımları izleyin:
- SharePoint Çevrimiçi Site koleksiyonunuza giriş yapın ve SharePoint belge kitaplığına veya indirmek istediğiniz Klasörün bulunduğu ana klasöre gidin.
- Klasöre sağ tıklayın >> İçerik menüsünden "İndir"i seçin. Araç çubuğundaki “İndir” düğmesini de kullanabilirsiniz.
Bu size Seçilen klasörü, Alt Klasörlerini ve dosyalarını içeren bir Zip dosyası getirir.
Basit, değil mi? Artık tarayıcınızda başka bir sekme açmanıza gerek kalmadan tüm bu belgelere doğrudan önünüzde ulaşabilirsiniz. PowerShell kullanarak SharePoint Online klasörünün nasıl indirileceğini görelim.
SharePoint Online: PowerShell'i kullanarak Klasörü İndirin
Artık bir klasörü tekrar tekrar veya planlı bir şekilde otomatik olarak indirmemiz gerektiğinde PowerShell'i kullanabiliriz. İşte SharePoint Online'dan bir klasör indirmek için PowerShell'im:
#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"
Function Download-SPOFolder()
{
param
(
[Parameter(Mandatory=$true)] [string] $SiteURL,
[Parameter(Mandatory=$true)] [Microsoft.SharePoint.Client.Folder] $SourceFolder,
[Parameter(Mandatory=$true)] [string] $TargetFolder
)
Try {
#Create Local Folder, if it doesn't exist
$FolderName = ($SourceFolder.ServerRelativeURL) -replace "/","\"
$LocalFolder = $TargetFolder + $FolderName
If (!(Test-Path -Path $LocalFolder)) {
New-Item -ItemType Directory -Path $LocalFolder | Out-Null
}
#Get all Files from the folder
$FilesColl = $SourceFolder.Files
$Ctx.Load($FilesColl)
$Ctx.ExecuteQuery()
#Iterate through each file and download
Foreach($File in $FilesColl)
{
$TargetFile = $LocalFolder+"\"+$File.Name
#Download the file
$FileInfo = [Microsoft.SharePoint.Client.File]::OpenBinaryDirect($Ctx,$File.ServerRelativeURL)
$WriteStream = [System.IO.File]::Open($TargetFile,[System.IO.FileMode]::Create)
$FileInfo.Stream.CopyTo($WriteStream)
$WriteStream.Close()
write-host -f Green "Downloaded File:"$TargetFile
}
#Process Sub Folders
$SubFolders = $SourceFolder.Folders
$Ctx.Load($SubFolders)
$Ctx.ExecuteQuery()
Foreach($Folder in $SubFolders)
{
If($Folder.Name -ne "Forms")
{
#Call the function recursively
Download-SPOFolder -SiteURL $SiteURL -SourceFolder $Folder -TargetFolder $TargetFolder
}
}
}
Catch {
write-host -foregroundcolor Red "Error Downloading Folder!" $_.Exception.Message
}
}
#Set parameter values
$SiteURL="https://crescent.sharepoint.com"
$FolderRelativeUrl ="Shared Documents/Reports"
$TargetFolder="C:\Docs"
#Setup Credentials to connect
$Cred= Get-Credential
$Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
#Setup the context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
$Ctx.Credentials = $Credentials
#Get the Web
$Web = $Ctx.Web
$Ctx.Load($Web)
$Ctx.ExecuteQuery()
$Web.ServerRelativeUrl+$FolderRelativeUrl
#Get the Folder
$SourceFolder = $Web.GetFolderByServerRelativeUrl($Web.ServerRelativeUrl+$FolderRelativeUrl)
$Ctx.Load($SourceFolder)
$Ctx.ExecuteQuery()
#Call the function to download a Folder
Download-SPOFolder -SiteURL $SiteURL -SourceFolder $SourceFolder -TargetFolder $TargetFolder
SharePoint Online'dan Klasör İndirmek için PnP PowerShell
PowerShell kullanarak SharePoint'ten nasıl klasör indirebilirim? Bu PnP PowerShell betiği, SharePoint Online belge kitaplığındaki belirli bir Klasördeki tüm dosyaları ve alt klasörleri yerel bir dizine indirmek için Get-PnPFolder ve Get-PnPFile cmdlet'lerini kullanır.
#Function to Download All Files from a SharePoint Online Folder - Recursively
Function Download-SPOFolder([Microsoft.SharePoint.Client.Folder]$Folder, $DestinationFolder)
{
#Get the Folder's Site Relative URL
$FolderURL = $Folder.ServerRelativeUrl.Substring($Folder.Context.Web.ServerRelativeUrl.Length)
$LocalFolder = $DestinationFolder + ($FolderURL -replace "/","\")
#Create Local Folder, if it doesn't exist
If (!(Test-Path -Path $LocalFolder)) {
New-Item -ItemType Directory -Path $LocalFolder | Out-Null
Write-host -f Yellow "Created a New Folder '$LocalFolder'"
}
#Get all Files from the folder
$FilesColl = Get-PnPFolderItem -FolderSiteRelativeUrl $FolderURL -ItemType File
#Iterate through each file and download Sourcefile
Foreach($File in $FilesColl)
{
Get-PnPFile -ServerRelativeUrl $File.ServerRelativeUrl -Path $LocalFolder -FileName $File.Name -AsFile -force
Write-host -f Green "`tDownloaded File from '$($File.ServerRelativeUrl)'"
}
#Get Subfolders of the Folder and call the function recursively
$SubFolders = Get-PnPFolderItem -FolderSiteRelativeUrl $FolderURL -ItemType Folder
Foreach ($Folder in $SubFolders | Where {$_.Name -ne "Forms"})
{
Download-SPOFolder $Folder $DestinationFolder
}
}
#Set Parameters
$SiteURL = "https://crescent.sharepoint.com/sites/marketing"
$FolderSiteRelativeURL = "/Team Documents/2018"
$DownloadPath ="C:\Docs" #TargetFilePath
#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Interactive
#Get the folder to download
$Folder = Get-PnPFolder -Url $FolderSiteRelativeURL
#Call the function to download all files from a folder
Download-SPOFolder $Folder $DownloadPath
Daha Büyük Bir Belge Kitaplığından Alt Klasörleri ve Dosyalarıyla Bir Klasör İndirin
Yukarıdaki komut dosyaları mükemmel şekilde çalışsa da, daha büyük kitaplıklarda Listview eşiğinin aşılması sorunlarıyla karşılaşabiliriz. Bu sorunu azaltmak için, dosyaları SharePoint Online klasöründen yerel diske indiren alternatif komut dosyam aşağıdadır:
#Set Parameters
$SiteURL = "https://Crescent.sharepoint.com/sites/marketing"
$FolderServerRelativeURL = "/Sites/Marketing/Shared Documents/New"
$DownloadPath ="C:\Docs\New"
#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Interactive
$Web = Get-PnPWeb
#Get the Folder to download
$Folder = Get-PnPFolder -Url $FolderServerRelativeURL -Includes ListItemAllFields.ParentList
#Get the Folder's Site Relative URL
$FolderSiteRelativeURL = $FolderServerRelativeUrl.Substring($Web.ServerRelativeUrl.Length)
$List = $Folder.ListItemAllFields.ParentList
#Get all Folders from List - with progress bar
$global:counter = 0;
$ListItems = Get-PnPListItem -List $List -PageSize 500 -Fields FileLeafRef -ScriptBlock { Param($items) $global:counter += $items.Count; Write-Progress -PercentComplete `
($global:Counter / ($List.ItemCount) * 100) -Activity "Getting Items from List:" -Status "Processing Items $global:Counter to $($List.ItemCount)";} | Where {$_.FieldValues.FileRef -like "$($FolderServerRelativeUrl)*"}
Write-Progress -Activity "Completed Retrieving Items from Folder $FolderServerRelativeURL" -Completed
#Get Subfolders of the Folder
$SubFolders = $ListItems | Where {$_.FileSystemObjectType -eq "Folder" -and $_.FieldValues.FileLeafRef -ne "Forms"}
$SubFolders | ForEach-Object {
#Ensure All Folders in the Local Path
$LocalFolder = $DownloadPath + ($_.FieldValues.FileRef.Substring($Web.ServerRelativeUrl.Length)) -replace "/","\"
#Create Local Folder, if it doesn't exist
If (!(Test-Path -Path $LocalFolder)) {
New-Item -ItemType Directory -Path $LocalFolder | Out-Null
}
Write-host -f Yellow "Ensured Folder '$LocalFolder'"
}
#Get all Files from the folder
$FilesColl = $ListItems | Where {$_.FileSystemObjectType -eq "File"}
#Iterate through each file and download
$FilesColl | ForEach-Object {
$FileDownloadPath = ($DownloadPath + ($_.FieldValues.FileRef.Substring($Web.ServerRelativeUrl.Length)) -replace "/","\").Replace($_.FieldValues.FileLeafRef,'')
Get-PnPFile -ServerRelativeUrl $_.FieldValues.FileRef -Path $FileDownloadPath -FileName $_.FieldValues.FileLeafRef -AsFile -force
Write-host -f Green "Downloaded File from '$($_.FieldValues.FileRef)'"
}
SharePoint Online belge kitaplığından tüm dosyaları ve klasörleri indirmek için şunu kullanın: SharePoint Çevrimiçi Kitaplığı'ndan tüm dosyaları indirmek için PowerShell
Sıkça Sorulan Sorular:
PnP PowerShell kullanarak SharePoint'ten nasıl dosya indiririm?
PnP PowerShell kullanarak SharePoint'ten dosya indirmek için önce Connect-PnPOnline cmdlet'ini kullanarak SharePoint Online sitenize bağlanın. Daha sonra SharePoint Online'dan bir dosya indirmek için PnP PowerShell "Get-PnPFile" cmdlet'ini kullanın. Örneğin, aşağıdaki PowerShell betiği, SharePoint Online sitesinden “Document.docx” adlı bir dosyayı indirir ve bunu C:\Temp klasörüne kaydeder: Get-PnPFile -Url “/sites/yoursite/Shared Documents/Document.docx” -Yol “C:\Temp” -Dosya Adı “Document.docx”
Daha fazla bilgi: SharePoint Online'dan dosya indirmek için PowerShell
Dosyaları ve klasörleri SharePoint Online'a nasıl yüklerim?
Dosyaları ve klasörleri SharePoint Online'a yüklemek için şu adımları izleyin: Klasörleri yüklemek istediğiniz SharePoint Online belge kitaplığına gidin. Araç çubuğundan Yükle düğmesine tıklayın ve Klasör seçeneğini seçin. Yüklemek istediğiniz klasörün konumuna göz atın, Klasörü seçin ve “Yükle” düğmesine tıklayın. Alternatif olarak, bir klasörü dosyalarıyla birlikte yüklemek için PowerShell'i kullanabilirsiniz: PowerShell'i kullanarak klasörü SharePoint Online'a yükleyin
SharePoint'te bir klasörü kuruluş dışından biriyle nasıl paylaşırım?
SharePoint Online'da kuruluşunuzun dışından biriyle bir klasörü paylaşmak için öncelikle etki alanınız ve siteniz için harici paylaşımın etkinleştirildiğinden emin olmalısınız. Onaylandıktan sonra, belirli bir klasörü seçip "Paylaş"a tıklayarak ve e-posta adresini girerek onlara erişim izni verebilirsiniz. Ayrıca klasör için salt okunur veya düzenleme erişimi gibi belirli izinler ayarlamayı da seçebilirsiniz. Daha fazlasını burada bulabilirsiniz: SharePoint'teki bir klasörü harici kullanıcılarla nasıl paylaşabilirim?
Bir SharePoint klasörünü yerel bir sürücüyle nasıl senkronize edebilirim?
Bir SharePoint klasörünü yerel bir sürücüye eşitlemek için OneDrive eşitleme istemcisini kullanın. Öncelikle bilgisayarınızda OneDrive uygulamasının yüklü olduğundan emin olun. Ardından senkronize etmek istediğiniz SharePoint klasörüne gidin ve “Senkronizasyon” düğmesini tıklayın. Bu, OneDrive senkronizasyon istemcisini açacak ve yerel sürücünüzde klasörü senkronize etmek için bir konum seçmenizi isteyecektir. Bir konum seçtikten sonra klasör senkronize edilmeye başlayacak ve SharePoint klasöründe yapılan tüm değişiklikler yerel klasöre yansıtılacaktır. Daha fazlası burada: SharePoint Yerel Klasörle Nasıl Eşitlenir?
Bir SharePoint klasörünü bir ağ sürücüsüne nasıl eşlerim?
Bir SharePoint klasörünü bir ağ sürücüsüne eşlemek için şu adımları izleyin. Öncelikle Dosya Gezgini'ni açın, "Bu PC"ye sağ tıklayın ve "Ağ sürücüsünü eşle"yi seçin. Ardından kullanmak istediğiniz sürücü harfini seçin ve SharePoint sitesinin URL'sini girin. Son olarak oturum açma bilgilerinizi girin ve eşlemek istediğiniz belge kitaplığını seçin. Daha Fazlası: SharePoint'i bir Ağ Sürücüsüne Nasıl Eşlerim?
