ค้นหาเว็บไซต์

SharePoint Online: รับไฟล์ทั้งหมดจากโฟลเดอร์โดยใช้ PowerShell


ความต้องการ: SharePoint Online PowerShell เพื่อแสดงรายการไฟล์ในโฟลเดอร์

PowerShell เพื่อรับไฟล์จากโฟลเดอร์ใน SharePoint Online

คุณเคยจำเป็นต้องรับไฟล์ทั้งหมดจากโฟลเดอร์ใน SharePoint Online หรือไม่? บางทีคุณอาจกำลังย้ายไฟล์ไปยังตำแหน่งอื่นและจำเป็นต้องดึงทุกอย่างจากโฟลเดอร์ บางทีคุณอาจต้องการวิธีที่รวดเร็วในการรับไฟล์ทั้งหมดจากโฟลเดอร์ที่กำหนดโดยไม่ต้องไปที่แต่ละไฟล์ ไม่ว่าเหตุผลของคุณคืออะไร PowerShell สามารถช่วยได้! โพสต์ในบล็อกนี้จะแสดงวิธีใช้ PowerShell เพื่อรับไฟล์ทั้งหมดจากโฟลเดอร์ที่กำหนดใน SharePoint Online

จากเว็บเบราว์เซอร์ ให้ใช้ปุ่ม "ส่งออกไปยัง Excel" ในแถบเครื่องมือเพื่อรับรายการไฟล์และโฟลเดอร์ทั้งหมด (จากโฟลเดอร์ย่อยแบบเรียกซ้ำ!)

ใช้ PowerShell เพื่อดึงข้อมูลไฟล์ทั้งหมดจากโฟลเดอร์ในไลบรารีเอกสาร SharePoint Online


#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 Get-FilesFromFolder()
{
    param
    (
        [Parameter(Mandatory=$true)] [string] $SiteURL,
        [Parameter(Mandatory=$true)] [string] $FolderURL
    )
    Try {
        #Setup Credentials to connect
        $Cred = Get-Credential
        $Cred = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.UserName,$Cred.Password)
    
        #Setup the context
        $Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
        $Ctx.Credentials = $Cred

        #Get the Folder and Files
        $Folder=$Ctx.Web.GetFolderByServerRelativeUrl($FolderURL)
        $Ctx.Load($Folder)
        $Ctx.Load($Folder.Files)
        $Ctx.ExecuteQuery()

        #Iterate through each File in the folder
        Foreach($File in $Folder.Files)
        {
            #Get Name for each File
            Write-Host $File.Name
        }
    }
    Catch {
        write-host -f Red "Error Getting Files from Folder!" $_.Exception.Message
    }
}

#Set Parameter Values
$SiteURL="https://crescent.sharepoint.com/sites/marketing"
$FolderURL="/Branding/Classified/Finance Department Files"

#Call the function to get list items from folder
Get-FilesFromFolder -SiteURL $SiteURL -FolderURL $FolderURL

PnP PowerShell เพื่อรับไฟล์ทั้งหมดจากโฟลเดอร์ใน SharePoint Online

หากต้องการรับไฟล์ทั้งหมดจากโฟลเดอร์แบบวนซ้ำ เราสามารถใช้ PowerShell cmdlet Get-PnPFolderItem นี้:


#Config Variables
$SiteURL = "https://Crescent.sharepoint.com"
$FolderSiteRelativeUrl = "/Shared Documents/2017" #Folder's Site Relative Path
 
#Get Credentials to connect
$Cred = Get-Credential
 
Try {
    #Connect to PnP Online
    Connect-PnPOnline -Url $SiteURL -Credentials $Cred
 
    #Get All Files from the Folder
    $FolderItems = Get-PnPFolderItem -FolderSiteRelativeUrl $FolderSiteRelativeUrl -ItemType File -Recursive
    
    Write-host "Total Number of Files in the Folder:" $FolderItems.Count
    ForEach($File in $FolderItems)
    {
        $File.Name
    }
}
catch {
    write-host "Error: $($_.Exception.Message)" -foregroundcolor Red
}

SharePoint Online PowerShell นี้รับไฟล์ทั้งหมดจากโฟลเดอร์ แม้ว่าสคริปต์ข้างต้นทำงานได้ดีสำหรับไลบรารีเอกสารที่มี <5,000 รายการ แต่ในไลบรารีเอกสารขนาดใหญ่ แต่ PnP PowerShell cmdlet Get-PnPFolderItem ให้ข้อผิดพลาด:

Get-PnPFolderItem : การดำเนินการที่พยายามไม่ได้รับอนุญาตเนื่องจากเกินขีดจำกัดมุมมองรายการ”

ดังนั้น เพื่อบรรเทาปัญหานั้น เราสามารถแทนที่ด้วย Get-PnPListItem cmdlet


#Config Variables
$SiteURL = "https://Crescent.sharepoint.com/sites/Marketing"
$ListName ="Branding"
$FolderServerRelativePath = "/sites/Marketing/Branding*" #Any file under the given path
  
#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Interactive
 
#Get all files from folder
Get-PnPListItem -List $ListName -PageSize 2000 | Where {$_.FieldValues.FileRef -like $FolderServerRelativePath -and $_.FileSystemObjectType -eq "File" } | ForEach-Object {
   Write-host $_.FieldValues.FileRef
}

นี่คือ PowerShell อื่นเพื่อรับรายการทั้งหมดจากโฟลเดอร์ SharePoint Online: SharePoint Online: รับรายการทั้งหมดในโฟลเดอร์

คำถามที่พบบ่อย:

ฉันจะรับรายการไฟล์ไลบรารี SharePoint ทั้งหมดได้อย่างไร

คุณสามารถรับรายการไฟล์ไลบรารี SharePoint ทั้งหมดได้หลายวิธี ทางเลือกหนึ่งคือการใช้คุณสมบัติ "ส่งออกเป็น CSV" จากแถบเครื่องมือ ซึ่งจะส่งคืนรายการไฟล์ไลบรารี SharePoint ทั้งหมดและตำแหน่งของไฟล์บนเซิร์ฟเวอร์ของคุณ อีกวิธีหนึ่งคือการใช้สคริปต์ PowerShell เพื่อดึงรายการไฟล์และโฟลเดอร์ทั้งหมดในไลบรารีเอกสาร SharePoint Online
ข้อมูลเพิ่มเติม: รับไฟล์ทั้งหมดในไลบรารีเอกสาร SharePoint Online โดยใช้ PowerShell

จะดาวน์โหลดไลบรารีเอกสารจาก SharePoint Online ได้อย่างไร

วิธีที่ง่ายที่สุดในการดาวน์โหลดไลบรารีเอกสารคือ: ไปที่ไลบรารีเอกสาร SharePoint ของคุณ เลือกไฟล์และโฟลเดอร์ทั้งหมด จากนั้นคลิกที่ปุ่ม "ดาวน์โหลด" จากแถบเครื่องมือ ซึ่งจะให้ไฟล์ Zip พร้อมไฟล์และโฟลเดอร์ทั้งหมดจากไลบรารีเอกสาร
คุณยังสามารถใช้: PowerShell เพื่อดาวน์โหลดไลบรารีเอกสารจาก SharePoint Online

บทความที่เกี่ยวข้อง