diff --git a/scripts/spo-download-files-from-doclib/README.md b/scripts/spo-download-files-from-doclib/README.md index a5803288d..5fdd84246 100644 --- a/scripts/spo-download-files-from-doclib/README.md +++ b/scripts/spo-download-files-from-doclib/README.md @@ -78,6 +78,57 @@ Write-Host "Download completed." ``` [!INCLUDE [More about PnP PowerShell](../../docfx/includes/MORE-PNPPS.md)] +# [CLI for Microsoft 365 using PowerShell](#tab/cli-m365-ps) + +```powershell +# Define variables +$siteUrl = "https://yoursharepointsite.sharepoint.com/sites/yoursite" +$libraryPath = "/Shared Documents/YourFolder" +$localDownloadPath = "C:\Downloads\SharePointFiles" + +m365 login + +function Download-FilesFromSharePoint { + param ( + [string]$LibraryPath, + [string]$LocalDownloadPath, + [bool]$Recursive = $true + ) + $folder = m365 spo folder get --webUrl $siteUrl --url $LibraryPath --output json | ConvertFrom-Json + if($Recursive){ + # Get all files in the folder and subfolders + $files = m365 spo file list --webUrl $siteUrl --folderUrl $LibraryPath --recursive --output json | ConvertFrom-Json + } + else{ + # Get all files in the folder + $files = m365 spo file list --webUrl $siteUrl --folderUrl $LibraryPath --output json | ConvertFrom-Json + } + # Download each file + foreach ($file in $files) { + $fileUrl = $file.ServerRelativeUrl + $fileName = $file.Name + $relpath = $fileUrl.SubString($folder.ServerRelativeUrl.length+1).Replace($fileName,"") + $localFilePath = $LocalDownloadPath + if($relpath.length -gt 0){ + $localFilePath = Join-Path -Path $LocalDownloadPath -ChildPath $relpath + } + # Ensure the local download path exists + if (-not (Test-Path -Path $localFilePath)) { + $localFolder = New-Item -ItemType Directory -Path $localFilePath + } + Write-Host "Downloading $fileName..." + m365 spo file get --webUrl $siteUrl --url $fileUrl --asFile --path (Join-Path -Path $localFilePath -ChildPath $fileName) + } +} + +# Call the function to download files +Download-FilesFromSharePoint -LibraryPath $libraryPath -LocalDownloadPath $localDownloadPath + +Write-Host "Download completed." + +``` +[!INCLUDE [More about CLI for Microsoft 365](../../docfx/includes/MORE-CLIM365.md)] + *** ## Contributors diff --git a/scripts/spo-download-files-from-doclib/assets/sample.json b/scripts/spo-download-files-from-doclib/assets/sample.json index e9684683a..17066cdd9 100644 --- a/scripts/spo-download-files-from-doclib/assets/sample.json +++ b/scripts/spo-download-files-from-doclib/assets/sample.json @@ -9,7 +9,7 @@ "" ], "creationDateTime": "2024-09-21", - "updateDateTime": "2024-09-21", + "updateDateTime": "2024-10-01", "products": [ "SharePoint" ], @@ -21,6 +21,10 @@ { "key": "POWERSHELL", "value": "7.2.0" + }, + { + "key": "CLI-FOR-MICROSOFT365", + "value": "9.1.0" } ], "categories": [ @@ -50,6 +54,11 @@ "name": "Want to learn more about PnP PowerShell and the cmdlets", "description": "Check out the PnP PowerShell site to get started and for the reference to the cmdlets.", "url": "https://aka.ms/pnp/powershell" + }, + { + "name": "Want to learn more about CLI for Microsoft 365 and the commands", + "description": "Check out the CLI for Microsoft 365 site to get started and for the reference to the commands.", + "url": "https://aka.ms/cli-m365" } ] }