首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

PowerShell 取得 SharePoint Site Collection 所有被簽出文件

     編輯:關於.NET

應用場景

文件被簽出後對其他用戶隱藏,導致文件統計數量不準。需掃描整個 Site Collection 找出所有簽出文件並匯出報表。

PowerShell 腳本

Add-PSSnapin Microsoft.SharePoint.PowerShell

function GetAllCheckOutFiles([string]$siteUrl)
{
    $spSite = Get-SPSite $siteUrl
    $spSite.AllWebs | ForEach-Object {
        $_.Lists | Where-Object { $_.BaseTemplate -eq "DocumentLibrary" -and $_.Hidden -eq $false } | ForEach-Object {
            # 輸出:文件 URL、簽出者
            $_.CheckedOutFiles | Select-Object @{Name="Url";Expression={$_.Url}}, @{Name="CheckedOutBy";Expression={$_.CheckedOutByName}} | 
            Out-File "c:\txtResult.txt" -Append
        }
    }
    $spSite.Dispose()
}

# 執行
GetAllCheckOutFiles("https://your-sharepoint-site")

關鍵點說明

  • Get-SPSite 取得 Site Collection 物件。
  • AllWebs 遍歷所有子網站。
  • BaseTemplate -eq "DocumentLibrary" 過濾文件庫(排除隱藏清單)。
  • CheckedOutFiles 集合包含所有被簽出的 SPCheckedOutFile 物件,屬性含 Url、CheckedOutByName、CheckedOutBy (SPUser)、TimeLastModified。
  • 結果導出 c:\txtResult.txt,可進一步匯入 Excel 分析。

進階擴充

  • 加入 Web.Url、List.Title 欄位便於定位文件所在庫。
  • 輸出 CSV 格式:Export-Csv -Path "c:\CheckoutReport.csv" -NoTypeInformation。
  • 排除特定文件庫(如「站台資產庫」):Where-Object { $_.Title -notmatch "Assets" }。
  • 定時排程:配合 Windows Task Scheduler 每日執行,自動郵寄報表給管理員。

注意事項

  • 需在 SharePoint 伺服器上執行,或透過 PowerShell Remoting 連線。
  • 執行帳戶需具備 Site Collection Administrator 權限。
  • 大量文件庫執行時間較長,建議加入進度顯示 Write-Host。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved