You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PowerShell脚本获取网站最后修改操作的用户名称

嘿,我来帮你搞定这个需求!要获取指定网站里最后修改项的修改用户,其实可以通过PowerShell结合SharePoint的管理工具来实现——毕竟你提到的Modified By字段是SharePoint里的标准字段嘛。下面给你两种常用的方案,按需选择:

方案1:用PnP PowerShell(推荐,灵活又省心)

PnP PowerShell是专门针对SharePoint的工具,操作起来比原生模块更顺手,先给你走一遍流程:

  1. 先安装PnP模块(如果还没装的话):
Install-Module -Name PnP.PowerShell -Force -AllowClobber
  1. 连接到你的目标网站:
Connect-PnPOnline -Url "https://yourtenant.sharepoint.com/sites/yourtargetsite" -Interactive
  1. 编写脚本遍历列表,找到全站最新修改的项并提取修改用户:
# 先获取网站里所有非隐藏、非系统的列表(避免拿到系统自动生成的项)
$lists = Get-PnPList | Where-Object { !$_.Hidden -and !$_.SystemList }

# 初始化变量存最新修改的项
$latestModifiedItem = $null

# 逐个列表找最新项,再对比出全站最久的那个
foreach ($list in $lists) {
    $currentLatestItem = Get-PnPListItem -List $list -Fields "Modified", "Editor" -OrderBy Modified -Top 1
    if ($currentLatestItem -and (!$latestModifiedItem -or $currentLatestItem.Modified -gt $latestModifiedItem.Modified)) {
        $latestModifiedItem = $currentLatestItem
    }
}

# 输出结果
if ($latestModifiedItem) {
    Write-Host "✅ 最后修改项的用户:" $latestModifiedItem.Editor.LookupValue
    Write-Host "⏰ 修改时间:" $latestModifiedItem.Modified
    Write-Host "📂 所属列表:" $latestModifiedItem.ParentList.Title
} else {
    Write-Host "❌ 网站里没找到任何修改过的项"
}

这里的Editor字段就是对应SharePoint里的Modified By,通过.LookupValue就能直接拿到用户名称啦。

方案2:用SharePoint Online Management Shell

如果你习惯用微软原生的SPO管理模块,也可以这么做:

  1. 先连接到SPO管理员中心:
Connect-SPOService -Url "https://yourtenant-admin.sharepoint.com"
  1. 然后获取目标网站和列表,查找最新项:
# 指定目标网站URL
$siteUrl = "https://yourtenant.sharepoint.com/sites/yourtargetsite"
$site = Get-SPOSite -Identity $siteUrl

# 获取网站下的有效列表
$lists = Get-SPOList -Web $siteUrl | Where-Object { !$_.Hidden -and !$_.SystemList }

$latestModifiedItem = $null

foreach ($list in $lists) {
    $currentLatestItem = Get-SPOListItem -List $list.Id -Web $siteUrl -Fields "Modified", "Editor" -OrderBy Modified -Top 1
    if ($currentLatestItem -and (!$latestModifiedItem -or $currentLatestItem.FieldValues["Modified"] -gt $latestModifiedItem.FieldValues["Modified"])) {
        $latestModifiedItem = $currentLatestItem
    }
}

# 输出结果
if ($latestModifiedItem) {
    $editorName = $latestModifiedItem.FieldValues["Editor"].LookupValue
    Write-Host "✅ 最后修改项的用户:" $editorName
    Write-Host "⏰ 修改时间:" $latestModifiedItem.FieldValues["Modified"]
    Write-Host "📂 所属列表:" $list.Title
} else {
    Write-Host "❌ 网站里没找到任何修改过的项"
}
一些小提示
  • 确保你有目标网站的读取权限,不然脚本会报错哦
  • 如果只需要某个特定列表的最新项,直接去掉遍历列表的部分,指定列表名称就行,比如:Get-PnPListItem -List "Documents" -Fields "Modified", "Editor" -OrderBy Modified -Top 1
  • 要是你用的是本地SharePoint Server,记得加载原生的SharePoint PowerShell snapin:Add-PSSnapin Microsoft.SharePoint.PowerShell,连接方式改成Get-SPWeb "http://yoursiteurl"就行

内容的提问来源于stack exchange,提问作者Ciro di Marzo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:58:19