SharePoint Online: PowerShell เพื่อรับโฟลเดอร์ในไลบรารีเอกสาร
ความต้องการ: รับโฟลเดอร์ในไลบรารีเอกสาร SharePoint Online โดยใช้ PowerShell
นี่คือคอลเลกชันสคริปต์ PowerShell ที่ดีของฉันเพื่อรับโฟลเดอร์ใน SharePoint Online!
รับโฟลเดอร์ใน SharePoint Online โดยใช้ PowerShell By URL
คุณจำเป็นต้องได้รับโฟลเดอร์เฉพาะจากไลบรารีเอกสาร SharePoint Online ของคุณหรือไม่ บางทีคุณอาจต้องการคัดลอกเนื้อหาของโฟลเดอร์นั้นไปที่อื่น หรือบางทีคุณเพียงต้องการทำอะไรบางอย่างกับโฟลเดอร์ โพสต์นี้จะแสดงวิธีใช้ PowerShell เพื่อรับโฟลเดอร์จากไลบรารีเอกสาร
นี่คือ SharePoint Online PowerShell เพื่อรับโฟลเดอร์ในไลบรารีเอกสาร ตรวจสอบให้แน่ใจว่า URL ของโฟลเดอร์ถูกถอดรหัสแล้ว! เช่น "Shared%20Documents" จะต้องถอดรหัสเป็น "Shared Documents"
#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"
#Variables
$SiteURL = "https://Crescent.sharepoint.com/Sites/Marketing"
$ServerRelativeUrl= "/Sites/Marketing/Shared Documents/2017"
Try {
#Get 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 from URL
$Web = $Ctx.web
$Ctx.Load($Web)
$Ctx.executeQuery()
#Get the Folder object by Server Relative URL
$Folder = $Web.GetFolderByServerRelativeUrl($ServerRelativeUrl)
$Ctx.Load($Folder)
$Ctx.ExecuteQuery()
#Get Some Folder Properties
Write-host -f Green "Total Number of Files in the Folder:"$Folder.ItemCount
}
Catch {
write-host -f Red "Error Getting Folder!" $_.Exception.Message
}
SharePoint Online PowerShell เพื่อรับโฟลเดอร์ในไลบรารีเอกสารตามชื่อโฟลเดอร์
หากต้องการรับรายการโฟลเดอร์จากไลบรารี ให้ใช้ PowerShell นี้:
#Variables
$SiteURL = "https://Crescent.sharepoint.com/Sites/Marketing"
$LibraryName = "Documents"
$FolderName = "2017"
Try {
#Get 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 Library
$Library = $Ctx.web.Lists.GetByTitle($LibraryName)
$Folders = $Library.RootFolder.Folders
$Ctx.Load($Folders)
$Ctx.executeQuery()
#Get the Folder by Name
$Folder = $Folders | Where {$_.Name -eq $FolderName}
$Ctx.Load($Folder)
$Ctx.ExecuteQuery()
#Get Some Folder Properties
Write-host -f Green "Total Number of Files in the Folder:"$Folder.ItemCount
}
Catch {
write-host -f Red "Error Getting Folder!" $_.Exception.Message
}
SharePoint Online PowerShell เพื่อแสดงรายการโฟลเดอร์ทั้งหมดในไลบรารี
คุณกำลังมองหาวิธีที่ง่ายและรวดเร็วในการรับรายการโฟลเดอร์ทั้งหมดในไลบรารีเอกสาร SharePoint Online หรือไม่? ถ้าเป็นเช่นนั้น PowerShell สามารถช่วยได้! ฉันจะแสดงวิธีใช้ PowerShell เพื่อรับรายการโฟลเดอร์ทั้งหมดในไลบรารีเอกสาร SharePoint Online
#sharepoint online powershell list folders
$SiteURL = "https://Crescent.sharepoint.com/Sites/Marketing"
$ListName = "Documents"
Try {
#Get 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 Library
$List = $Ctx.web.Lists.GetByTitle($ListName)
#Query to Get all Folders from the library
$Query = New-Object Microsoft.SharePoint.Client.CamlQuery
$Query.ViewXml="<View Scope='RecursiveAll'><Query><Where><Eq><FieldRef Name='FSObjType'/><Value Type='Integer'>1</Value></Eq></Where></Query></View>"
$ListItems = $List.GetItems($Query)
$Ctx.Load($ListItems)
$Ctx.ExecuteQuery()
Write-host "Total Number of Folders in List:" $ListItems.count
#Loop through each file in the library
Foreach($Item in $ListItems)
{
#Get the Folder Item
$Ctx.Load($Item.Folder)
$Ctx.ExecuteQuery()
Write-host -f Green $Item.Folder.ServerRelativeUrl
}
}
Catch {
write-host -f Red "Error Getting Folder!" $_.Exception.Message
}
SharePoint Online PowerShell เพื่อวนซ้ำแต่ละโฟลเดอร์ในไลบรารี:
แล้ววนซ้ำโฟลเดอร์ทั้งหมดในไลบรารีเอกสารจาก PowerShell ล่ะ
#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 to Get Sub-folders of a Folder in SharePoint Online
Function Get-SPOFolders([Microsoft.SharePoint.Client.Folder]$Folder)
{
Try {
Write-host $Folder.ServerRelativeUrl
#Process all Sub Folders
$Ctx.Load($Folder.Folders)
$Ctx.ExecuteQuery()
#Iterate through each sub-folder of the folder
Foreach ($Folder in $Folder.Folders)
{
#Call the function recursively
Get-SPOFolders $Folder
}
}
Catch {
write-host -f Red "Error Getting Folder!" $_.Exception.Message
}
}
#Variables
$SiteURL = "https://Crescent.sharepoint.com/Sites/Marketing"
$ListName = "Documents"
#Get 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 Library
$List = $Ctx.web.Lists.GetByTitle($ListName)
$Ctx.Load($List.RootFolder)
$Ctx.ExecuteQuery()
#call the function to get all folders of a document library
Get-SPOFolders $List.RootFolder
PnP PowerShell เพื่อรับโฟลเดอร์ใน SharePoint Online
นี่คือ PnP PowerShell เพื่อรับโฟลเดอร์ในไลบรารีเอกสาร SharePoint! ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งโมดูล PnP PowerShell ก่อนที่จะเรียกใช้สคริปต์นี้
#Config Variables
$SiteURL = "https://Crescent.sharepoint.com"
$ParentFolderURL= "/Shared Documents" #Parent Folder's Site Relative Path
$FolderName="2017"
#Get Credentials to connect
$Cred = Get-Credential
Try {
#Connect to SharePoint Online site
Connect-PnPOnline -Url $SiteURL -Credentials $Cred
#Get the Folder
$Folder = Get-PnPFolderItem -FolderSiteRelativeUrl $ParentFolderURL -ItemName $FolderName
Write-host "Total Number of Items in the Folder:" $Folder.ItemCount
}
catch {
write-host "Error: $($_.Exception.Message)" -foregroundcolor Red
}
เรายังสามารถรับโฟลเดอร์โดยใช้ Get-PnPFolder cmdlet นี่คือตัวอย่าง:
#Config Variables
$SiteURL = "https://Crescent.sharepoint.com"
$FolderURL = "/Shared Documents/2018"
#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Credentials (Get-Credential)
#Get the SharePoint library Folder
$Folder = Get-PnPFolder -Url $FolderURL
รับโฟลเดอร์ทั้งหมดในไลบรารีเอกสารแบบเรียกซ้ำ
หากต้องการรับโฟลเดอร์และโฟลเดอร์ย่อยทั้งหมดจากไลบรารีเอกสารแบบเรียกซ้ำ ให้ใช้:
#Set Variables
$SiteURL = "https://crescent.sharepoint.com/sites/marketing/2018"
$FolderURL = "/Shared Documents"
#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Interactive #-Credentials (Get-Credential)
#Get all Sub-Folders of folder
Function Get-SubFolders($FolderURL)
{
#Get all sub-folders of the Folder
$SubFolders = Get-PnPFolderItem -FolderSiteRelativeUrl $FolderURL -ItemType Folder | Where {$_.Name -ne "Forms" -and $_.Name -ne "Document"}
#Loop through the folders
ForEach($SubFolder in $SubFolders)
{
$SubFolderURL = $FolderUrl+"/"+$SubFolder.Name
write-host -ForegroundColor Green $SubFolder.Name " - " $SubFolderURL
#Call the function recursively
Get-SubFolders $SubFolderURL
}
}
#Call the function with the root folder of the doc library
Get-SubFolders $FolderURL
PowerShell เพื่อรับโฟลเดอร์ย่อยทั้งหมดจากโฟลเดอร์ใน SharePoint Online
หากต้องการรับโฟลเดอร์ทั้งหมดจากโฟลเดอร์ ให้ใช้ PowerShell นี้:
#Parameters
$SiteURL="https://crescent.sharepoint.com/sites/Marketing"
$FolderSiteRelativeURL = "/Branding/2020"
#Connect to the Site collection
Connect-PnPOnline -URL $SiteURL -Interactive
#Get the Folder from site relative URL
$Folder = Get-PnPFolder -Url $FolderSiteRelativeURL
#Get all Subfolders of a folder - recursively
$SubFolders = Get-PnPFolderItem -FolderSiteRelativeUrl $FolderSiteRelativeURL -ItemType Folder -Recursive
#Get Server relative URL of all subfolders
$SubFolders | Select ServerRelativeURL
แล้วการรับโฟลเดอร์ย่อยทั้งหมดซ้ำจากโฟลเดอร์ที่กำหนดล่ะ
$SubFolders = Get-PnPFolderItem -FolderSiteRelativeUrl $FolderSiteRelativeURL -ItemType Folder -Recursive
รับรายการทั้งหมดจากโฟลเดอร์โดยใช้ PnP PowerShell:
#Config Variables
$SiteURL = "https://Crescent.sharepoint.com"
$FolderURL= "/Shared Documents/2018" #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 Items inside the Folder
$FolderItems = Get-PnPFolderItem -FolderSiteRelativeUrl $FolderURL
Write-host "Total Number of Items in the Folder:" $FolderItems.Count
ForEach($Item in $FolderItems)
{
Write-host $Item.Name
}
}
catch {
write-host "Error: $($_.Exception.Message)" -foregroundcolor Red
}
ต่อไปนี้เป็นตัวอย่างของการนับจำนวนไฟล์และโฟลเดอร์ย่อยในแต่ละโฟลเดอร์ในไลบรารีเอกสาร SharePoint Online: รับไฟล์และโฟลเดอร์ย่อยนับในแต่ละโฟลเดอร์ในไลบรารีเอกสาร SharePoint Online โดยใช้ PowerShell
คำถามที่พบบ่อย:
ฉันจะสร้างโฟลเดอร์ใน SharePoint Online โดยใช้ PowerShell ได้อย่างไร
การสร้างโฟลเดอร์ใน SharePoint Online เป็นวิธีที่ง่ายและรวดเร็วในการจัดระเบียบเอกสารและเนื้อหาอื่นๆ ของคุณ เมื่อต้องการสร้างโฟลเดอร์โดยใช้ PowerShell ให้เชื่อมต่อกับ SharePoint Online และเรียกใช้ Add-PnPFolder cmdlet ใน PnP PowerShell หรือวิธีการ Folders.Add ใน CSOM
ข้อมูลเพิ่มเติม: สร้างโฟลเดอร์ใน SharePoint Online
