当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] SharePoint Online:获取特定用户创建或修改的所有项目

作者:精品下载站 日期:2024-12-14 15:38:43 浏览:14 分类:玩电脑

SharePoint Online:获取特定用户创建或修改的所有项目


要求:查找特定用户创建或修改的所有列表项。

[玩转系统] SharePoint Online:获取特定用户创建或修改的所有项目

PowerShell 获取特定用户创建或修改的所有文件

如果您需要获取特定用户在 SharePoint Online 中创建或修改的所有项目的列表,可以使用以下 PowerShell 脚本来执行此操作!您可能需要此数据用于审核目的,或者只是想提取用户在 SharePoint Online 网站中创建的所有文件。


#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"

#Set Variables
$SiteURL = "https://crescent.sharepoint.com/sites/marketing" 
$ListName = "Team Documents" 
$UserAccount = "[email protected]"
$CSVPath = "C:\Temp\UserData.csv"
 
#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

#Resolve User account
$User = $Ctx.web.EnsureUser($UserAccount)
$Ctx.Load($User)
$Ctx.ExecuteQuery()
 
#Get the List
$List=$Ctx.Web.Lists.GetByTitle($ListName) 
$Ctx.Load($List)
$Ctx.ExecuteQuery()           

#Define CAML Query to filter items created or modified by a specific user
$Query = New-Object Microsoft.SharePoint.Client.CamlQuery
$Query.ViewXml ="@
<View Scope='RecursiveAll'>
    <Query>
        <OrderBy><FieldRef Name='Created' Ascending='FALSE'/></OrderBy>
            <Where>
                <Or>
                    <Eq>
                        <FieldRef Name='Author' LookupId='TRUE'/><Value Type='User'>$($user.Id)</Value>
                    </Eq>
                    <Eq>
                        <FieldRef Name='Editor' LookupId='TRUE' /><Value Type='User'>$($user.Id)</Value>
                    </Eq>
                </Or>
            </Where>
        </Query>
</View>"

#Get List Items matching CAML Query
$ListItems = $List.GetItems($Query)
$Ctx.Load($ListItems)
$Ctx.ExecuteQuery()
Write-host "Total Number of List Items Found:"$ListItems.count

$DataCollection = @()
#Iterate through each item
ForEach($ListItem in $ListItems)
{
    #Collect data
    $Data = New-Object PSObject -Property ([Ordered] @{
        Name  = $ListItem.FieldValues.FileLeafRef
        RelativeURL = $ListItem.FieldValues.FileRef
        CreatedBy =  $ListItem.FieldValues.Author.Email
        CreatedOn = $ListItem.FieldValues.Created
        ModifiedBy =  $ListItem.FieldValues.Editor.Email
        ModifiedOn = $ListItem.FieldValues.Modified
        FileSize = $ListItem.FieldValues.File_x0020_Size
    })
    $DataCollection += $Data
}
$DataCollection

#Export data to CSV File
$DataCollection | Export-Csv -Path $CSVPath -NoTypeInformation

PnP PowerShell 从 SharePoint Online 库获取特定用户创建的所有文件

假设您是 SharePoint Online 网站的管理员,需要知道谁在文档库中创建了项目。让我们探索 PowerShell 以获取特定用户创建的 SharePoint Online 网站中的所有文件的列表:


#Parameters
$SiteURL = "https://crescent.sharepoint.com/sites/Marketing"
$ListName = "Documents"
$AuthorEmail = "[email protected]"

#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Interactive

#Get all files created by a particular user from the Library
$ListItems = Get-PnPListItem -List $Listname -PageSize 2000 | where {$_.FieldValues.Author.Email -eq $AuthorEmail -and $_.FileSystemObjectType -eq "File"}

$Resultset = @()
#Collect documents data
$ListItems | ForEach-Object {
    $Resultset += New-Object PSObject -Property ([Ordered] @{
        Name  = $_.FieldValues.FileLeafRef
        RelativeURL = $_.FieldValues.FileRef
        CreatedBy =  $_.FieldValues.Author.Email
        CreatedOn = $_.FieldValues.Created
        ModifiedBy =  $_.FieldValues.Editor.Email
        ModifiedOn = $_.FieldValues.Modified
        FileSizeInKB = $_.FieldValues.File_x0020_Size
    })
}
#Get Result set
$Resultset 

同样,要获取 SharePoint Online 文档库中特定用户修改的所有文件,请使用:


#Variables
$SiteURL = "https://crescent.sharepoint.com/sites/Marketing"
$ListName= "Branding"
$ModifiedByUserEmail = "[email protected]"

#Connect to SharePoint
Connect-PnPOnline -Url $SiteURL -Interactive

#Get All Files from the library that are modified by the given user
$Files = Get-PnPListItem -List $Listname -PageSize 2000 | Where {$_.FieldValues.Editor.Email -eq $ModifiedByUserEmail -and $_.FileSystemObjectType -eq "File"}

您可以使用此 PowerShell 获取特定用户创建或修改的所有项目,跟踪特定用户在 SharePoint Online 网站或文档库中所做的所有更改,或者筛选特定用户修改的项目。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯