【FAQ】Script導出SharePoint 目錄文件列表并統計大小

一、只導出文件列表的方法

1) 保存腳本(建議名:D:\tmp\Export-SharePoint-FileList.ps1

<# 
導出 SharePoint 指定文件夾(含子文件夾)的文件列表到 CSV(不統計大小)
前提:已安裝 PowerShell 7 + PnP.PowerShell;已在 Entra 注冊并拿到 ClientId
#># =====[ 需要修改的 3 個參數 ]=====
$SiteUrl = "https://<你的租戶>.sharepoint.com/sites/<站點名>"  # 例:https://suniatechnologyinc.sharepoint.com/sites/SuniaDUP2
$ClientId = "<你的ClientID>"                                   # 你們自建的 App Registration 的 Application (client) ID
$FolderSiteRelativeUrl = "Shared Documents/路徑/到/目標目錄"     # 例:Shared Documents/5 - Projects/2025 - OCR - EDU/1 - Raw Data/1 - Shenzen/OCR_data_collection_china
# 也可以用“文檔/...”;以瀏覽器地址欄顯示為準,注意把 %20 換成空格# =====[ 連接站點 ]=====
Connect-PnPOnline -Url $SiteUrl -ClientId $ClientId -Interactive# =====[ 導出 ]=====
$exportDir = "D:\tmp"
if (-not (Test-Path $exportDir)) { New-Item -ItemType Directory -Path $exportDir | Out-Null }
$outCsv = Join-Path $exportDir ("SharePoint_FileList_{0}.csv" -f (Get-Date -Format "yyyyMMdd_HHmmss"))# 遞歸獲取文件(不取大小,避免各種字段/閾值問題)
$files = Get-PnPFolderItem -FolderSiteRelativeUrl $FolderSiteRelativeUrl -Recursive |Where-Object { $_.ItemType -eq "File" } |Select-Object Name, ServerRelativeUrl, TimeLastModified$files | Export-Csv $outCsv -NoTypeInformation -Encoding UTF8
Write-Host "文件清單已導出: $outCsv" -ForegroundColor Cyan

提示:$FolderSiteRelativeUrl 必須是站點相對路徑(不帶 /sites/... 前綴)。從瀏覽器地址欄復制 /sites/<站點名>/... 后,去掉前面的 /sites/<站點名>/ 即可;把 %20 改成空格。


2) 運行腳本

# 第一次運行腳本需要(當前用戶范圍即可)
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned# 執行
pwsh -File "D:\tmp\Export-SharePoint-FileList.ps1"
# 或者在 PowerShell 7 里:
# cd D:\tmp
# .\Export-SharePoint-FileList.ps1

3) 常見問題(只針對“導出列表”場景)

  • 結果為空或報錯 “Not well formatted JSON stream”
    先重新 Connect-PnPOnline,再運行;網絡不穩也會觸發,重試即可。

  • 報 5000 閾值
    僅導出名稱/路徑一般很少觸發。如果依然觸發,說明目錄極大:

    • 先在網頁里確認是否可以進一步細分子目錄;
    • 分多次填不同的 $FolderSiteRelativeUrl 跑即可。
  • 路徑不對
    把瀏覽器里 /sites/<站點名>/ 后面的部分(Shared Documents/...文檔/...)原樣粘貼到 $FolderSiteRelativeUrl

  • 庫名顯示為“文檔”但路徑用哪個?
    地址欄為準:地址如果是 /Shared%20Documents/... 就寫 Shared Documents/...;如果是 /文檔/... 就寫 文檔/...


如果你之后還需要對比本地與云端差異,我可以在這個腳本基礎上增加一個“比對本地目錄文件名 & 路徑”的步驟;但你現在只要列表,這個版本最穩、最省事。

二、導出文件列表并統計大小的方法

Q1:為什么要用 PowerShell 而不是直接在網頁導出?

  • 網頁端導出 Excel 功能對文檔庫視圖有 5000 項限制,大目錄經常超限

  • PowerShell 可以直接通過 SharePoint API 分頁拉取,不受單頁限制

  • 可一次性導出:

    • 文件名
    • 文件路徑
    • 文件大小(MB)
    • 最后修改時間
    • 目錄總大小

Q2:準備工作

  1. 安裝 PowerShell 7(64 位版)
    下載地址
    選擇 PowerShell-<版本>-win-x64.msi 安裝

  2. 安裝 PnP.PowerShell 模塊

    Install-Module -Name PnP.PowerShell -Force -AllowClobber
    
  3. Azure Entra ID 全局管理員注冊一個 App(一次性操作):

    • 名稱隨意(例如 PnP.PowerShell

    • 重定向 URI 選 http://localhost

    • 分配 Microsoft Graph API 權限:

      • Sites.Read.All
      • Sites.ReadWrite.All
    • 點擊“Grant admin consent”授權

    • 復制 Application (client) ID(后續連接用)


Q3:執行腳本

  1. 連接到 SharePoint 站點

    Connect-PnPOnline -Url "https://<租戶名>.sharepoint.com/sites/<站點名>" `-ClientId "<你的ClientID>" `-Interactive
    
  2. 設置目標目錄路徑(Server Relative URL)

    • 必須以 /sites/... 開頭

    • 例如:

      /sites/SuniaDUP2/Shared Documents/5 - Projects/2025 - OCR - EDU/1 - Raw Data/1 - Shenzen/OCR_data_collection_china
      
  3. 運行導出腳本(輸出到 D:\tmp):

    $folderServerRelativeUrl = "/sites/SuniaDUP2/Shared Documents/5 - Projects/2025 - OCR - EDU/1 - Raw Data/1 - Shenzen/OCR_data_collection_china"
    $exportDir = "D:\tmp"
    if (-not (Test-Path $exportDir)) { New-Item -ItemType Directory -Path $exportDir | Out-Null }
    $outCsv = Join-Path $exportDir ("SharePoint_FileList_{0}.csv" -f (Get-Date -Format "yyyyMMdd_HHmmss"))$items = Get-PnPListItem -List "Documents" -PageSize 2000 `-FolderServerRelativeUrl $folderServerRelativeUrl `-Fields "FileLeafRef","FileRef","File_x0020_Size","Modified"$files = $items | Where-Object { $_.FileSystemObjectType -eq "File" } |Select-Object `@{Name="Name";      Expression={ $_.FieldValues["FileLeafRef"] }},@{Name="Path";      Expression={ $_.FieldValues["FileRef"] }},@{Name="SizeBytes"; Expression={ [int64]$_.FieldValues["File_x0020_Size"] }},@{Name="SizeMB";    Expression={ "{0:N2}" -f ( [double]$_.FieldValues["File_x0020_Size"] / 1MB ) }},@{Name="Modified";  Expression={ $_.FieldValues["Modified"] }}$files | Export-Csv $outCsv -NoTypeInformation -Encoding UTF8
    Write-Host "文件清單已導出: $outCsv" -ForegroundColor Cyan$totalMB = ($files | Measure-Object -Property SizeBytes -Sum).Sum / 1MB
    Write-Host ("目錄總大小: {0:N2} MB" -f $totalMB) -ForegroundColor Green
    

Q4:常見問題

  1. 執行腳本時提示找不到列表

    • 可能是文檔庫名稱不是 "Documents"(中文環境可能顯示為“文檔”)
      用以下命令查找:

      Get-PnPList | Where-Object { $_.BaseTemplate -eq 101 } | Select-Object Title, RootFolder
      
  2. 報 5000 項閾值錯誤

    • 目錄中文件數過多時,拆分為多個子目錄分別導出
    • 或使用 SharePoint “存儲指標”查看總大小(見上一份 FAQ)
  3. 導出文件顯示大小為 0

    • 檢查是否正確獲取了 File_x0020_Size 字段
    • 確保 Where-Object { $_.FileSystemObjectType -eq "File" } 過濾掉了文件夾

Q5:對比“存儲指標”方法

方法適合場景優點缺點
存儲指標(Web)只看目錄大小不下文件、不受5000限制無法導出文件清單
PowerShell 腳本導出文件列表+大小可做對比分析大目錄可能要分批跑

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/92232.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/92232.shtml
英文地址,請注明出處:http://en.pswp.cn/web/92232.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

《Thinking in Java》讀書筆記---控制執行流程

就像有感知的生物一樣&#xff0c;程序必須在執行過程中控制它的世界&#xff0c;并做出選擇。在Java中&#xff0c;你要使用執行控制語句來作出選擇。一、流程控制基礎概念1.1 流程控制的重要性流程控制結構決定了程序執行的順序和邏輯分支&#xff0c;是編程語言中最基礎也是…

極驗 G-star 人才特訓營:為業務安全領域培養下一代新興力量

本文導讀 極驗為什么要啟動 G-star 實習生培養計劃&#xff1f;50多位來自多所高校的同學&#xff0c;在極驗經歷了一場怎樣的“非典型”實習&#xff1f;技術大咖親授&#xff0c;先培訓再實戰&#xff0c;極驗打造的是怎樣的人才體系&#xff1f;同學有話說&#xff1a;培養計…

攻防世界-web-csaw-mfw

一.題目分析這邊提示使用了Git&#xff0c;試著訪問.git看是否存在.git泄露瀏覽了一下&#xff0c;很多都是亂碼&#xff0c;想著用githack將git庫克隆下看一下二.操作python2 GitHack.py http://url/.git訪問了一下flag.php&#xff0c;沒啥發現&#xff0c;在看一下index.php…

202506 電子學會青少年等級考試機器人四級實際操作真題

更多內容和歷年真題請查看網站&#xff1a;【試卷中心 -----> 電子學會 ----> 機器人技術 ----> 四級】 網站鏈接 青少年軟件編程歷年真題模擬題實時更新 2025年6月 青少年等級考試機器人實操真題四級 實際操作 主題&#xff1a;感應節能燈&#xff08;四級&am…

DLT645電表數據 保存到MySQL數據庫項目案例

目錄 1 案例說明 2 VFBOX網關工作原理 3 準備工作 4 配置VFBOX網關采集DLT645電表數據 5 網關寫數據到MYSQL數據庫 6 安裝MYSQL數據庫 7 其他說明 8 案例總結 1 案例說明 設置網關采集DLT645電表數據數據把采集的數據保存到MySQL數據庫。 2 VFBOX網關工作原理 VFBOX網關…

Redux與React - 異步狀態操作(React快速上手4)

異步操作樣板代碼1. 創建store的寫法保持不變&#xff0c;配置好同步修改狀態的方法 2. 單獨封裝一個函數&#xff0c;在函數內部return一個新函數&#xff0c;在新函數中 2.1 封裝異步請求獲取數據 2.2 調用同步actionCreater傳入異步數據生成一個action對象&#xff0c;并使用…

win10桌面右鍵沒有新建word

win10右鍵新建word不見解決方法1、點擊開始&#xff0c;找到運行命令行&#xff0c;輸入regedit&#xff0c;打開注冊表。2、在左側找到HKEY_CLASSES_ROOT目錄&#xff0c;并展開。3.找到.docx 雙擊&#xff08;默認&#xff09;一項&#xff0c;將其改為 Word.Document.12。關…

Docker國內可用鏡像(2025.08.06測試)

Docker渡渡鳥鏡像可用&#xff08;測試時間2025.08.06&#xff09;https://docker.aityp.com/使用渡渡鳥鏡像pull ollama latest 例子&#xff1a;docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/ollama/ollama:0.10.1毫秒鏡像和軒轅鏡像也可用&#xff0c;但…

決策樹的實際案例

決策樹作為一種直觀、易解釋的機器學習算法&#xff0c;在金融、醫療、電商、風控等多個領域都有廣泛的實際應用。以下將講解1個典型案例&#xff1a;貸款違約預測。對于貸款違約預測&#xff0c;即在貸款人員在貸款之前對其進行預測&#xff0c;通過他的眾多特征情況判別是否可…

bool 類型轉換運算符重載

以下是一個極簡且聚焦核心知識點的示例代碼&#xff0c;用最直觀的方式演示 bool 類型轉換運算符重載的觸發邏輯、使用場景和避坑點&#xff0c;幫你快速掌握&#xff1a;cpp運行#include <iostream> using namespace std;// 核心類&#xff1a;演示 bool 轉換運算符 cla…

LVGL代碼框架簡介

LVGL代碼框架介紹LVGL&#xff08;Light and Versatile Graphics Library&#xff09;是一個輕量級、功能強大的嵌入式圖形庫。其代碼架構設計清晰&#xff0c;模塊化程度高。1. 整體架構層次LVGL采用分層架構設計&#xff0c;主要包含以下幾個層次&#xff1a;┌───────…

【云計算】云主機的親和性策略(三):云主機 宿主機

《云主機的親和性策略》系列&#xff0c;共包含以下文章&#xff1a; 1?? 云主機的親和性策略&#xff08;一&#xff09;&#xff1a;快樂旅行團2?? 云主機的親和性策略&#xff08;二&#xff09;&#xff1a;集群節點組3?? 云主機的親和性策略&#xff08;三&#xf…

【世紀龍科技】虛擬技術助力職教汽車自動變速器拆裝虛擬實訓軟件

在職業院校汽車專業實訓課堂上&#xff0c;教師常面臨這樣的兩難&#xff1a;學生圍在昂貴的自動變速器實物旁&#xff0c;卻因設備數量有限只能輪流操作&#xff1b;拆裝步驟稍有偏差便可能損壞精密部件&#xff0c;維修成本讓本就緊張的教學經費雪上加霜&#xff1b;傳統教學…

[LVGL] 配置lv_conf.h | 條件編譯 | 顯示屏lv_display

鏈接&#xff1a;https://docs.lvgl.io/master/ docs&#xff1a;LVGL LVGL&#xff08;Light and Versatile Graphics Library&#xff09;是用于在資源受限的嵌入式系統上創建圖形用戶界面&#xff08;GUI&#xff09;的開源解決方案。 它提供豐富的控件和靈活的**事件系…

sqli-labs通關筆記-第32關 GET寬字符注入(單引號閉合 手工注入+腳本注入兩種方法)

目錄 一、寬字符注入 二、代碼審計 1、代碼審計 2、SQL注入安全性分析 三、滲透實戰 1、進入靶場 2、id1探測 3、id%df-- 探測 4、手工注入 &#xff08;1&#xff09;獲取列數 &#xff08;2&#xff09;獲取回顯位 &#xff08;3&#xff09;獲取數據庫名 &…

MySQL的創建管理表:

目錄 基礎知識&#xff1a; 一條數據存儲的過程&#xff1a; 標識符命名規則&#xff1a; 創建和管理數據庫&#xff1a; 創建數據庫&#xff1a; 創建數據庫&#xff1a; 創建數據庫并指定字符集&#xff1a; 判斷數據庫是否存在&#xff0c;不存在則創建數據庫&#…

Linux Vi常用指令總結

Vi&#xff08;及其改進版 Vim&#xff09;是 Linux 中常用的文本編輯器&#xff0c;雖然入門有一定門檻&#xff0c;但熟練掌握后效率極高。以下是常見指令分類整理&#xff1a;1. 模式切換 普通模式&#xff08;命令模式&#xff09;&#xff1a;啟動后的默認模式&#xff0c…

解決遠程連接云服務器mysql編號1130問題

連接云服務器mysql失敗&#xff0c;可能是因為ip發生改變&#xff0c;被mysql攔截。我自己前后做了兩件事。大家趕時間可直接從二開始&#xff0c;不放心的就從一開始到結束一、在云服務器實例中為當前ip配置安全組權限。1.找到當前服務器的實例&#xff0c;進入安全組。為其增…

大數據存儲域——HDFS存儲系統

摘要本文介紹了HDFS存儲系統&#xff0c;包括其組件、工作機制、實戰經驗總結、使用場景以及與SpringBoot的實戰示例和優化設計。HDFS由Client、NameNode、SecondaryNameNode、DataNode等組件構成&#xff0c;通過特定的工作機制實現文件的讀取和寫入。它適用于多種場景&#x…

jdk動態代理如何實現

口語化答案好的&#xff0c;面試官。jdk 的動態代理主要是依賴Proxy類 和InvocationHandler 接口。jdk 動態代理要求類必須有接口。在進行實現的時候&#xff0c;首先要定義接口&#xff0c;比如MyService&#xff0c;這個接口就是我們的正常功能的實現。但是希望在不更改MySer…