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

SharePoint Online:用PnP PowerShell发布页面且保留原Modified By属性

SharePoint Online新闻帖子批量修改保留原修改人解决方案

方案1:发布页面时保留原Modified By属性(使用SystemUpdate)

通过-SystemUpdate参数可在修改页面后强制保留原修改人及修改时间,即使执行发布操作也不会覆盖这些系统字段。具体步骤及代码如下:

# 连接目标SharePoint站点
Connect-PnPOnline -Url "https://你的租户.sharepoint.com/sites/你的站点" -Interactive

# 获取所有已发布的新闻帖子(Site Pages库中PromotedState=2表示新闻)
$newsPages = Get-PnPListItem -List "Site Pages" -Query "<View><Query><Where><Eq><FieldRef Name='PromotedState'/><Value Type='Integer'>2</Value></Eq></Where></Query></View>"

foreach($pageItem in $newsPages){
    # 获取页面文件及原修改信息
    $pageFile = $pageItem.File
    $originalEditorId = $pageItem["Editor"].LookupId
    $originalModifiedTime = $pageItem["Modified"]

    # 执行页面内容修改(示例:更新页面标题)
    $page = Get-PnPClientSidePage -Identity $pageFile.Name
    $page.Title = "更新后的新闻标题"
    $page.Save()

    # 恢复原修改人及修改时间,使用SystemUpdate避免修改系统字段
    Set-PnPListItem -List "Site Pages" -Identity $pageItem.Id -Values @{
        Editor = $originalEditorId
        Modified = $originalModifiedTime
    } -SystemUpdate

    # 发布页面
    Publish-PnPFile -FileUrl $pageFile.ServerRelativeUrl

    # 发布后再次恢复原修改信息(发布操作可能触发系统字段更新)
    Set-PnPListItem -List "Site Pages" -Identity $pageItem.Id -Values @{
        Editor = $originalEditorId
        Modified = $originalModifiedTime
    } -SystemUpdate

    Invoke-PnPQuery
}

关键说明

  • -SystemUpdate参数会跳过对Created、Created By、Modified、Modified By等系统字段的更新,仅保存指定的字段修改。
  • 发布后需再次执行恢复操作,因为Publish-PnPFile会触发版本记录,可能临时修改Modified By字段。

方案2:更新页面属性无需重新发布页面

如果仅修改页面的元数据属性(如自定义字段、标题、描述等),而非页面的可视化内容(如Web部件、正文),则无需发布页面,直接通过列表项修改即可保留原修改人:

# 连接目标SharePoint站点
Connect-PnPOnline -Url "https://你的租户.sharepoint.com/sites/你的站点" -Interactive

# 获取所有已发布的新闻帖子
$newsPages = Get-PnPListItem -List "Site Pages" -Query "<View><Query><Where><Eq><FieldRef Name='PromotedState'/><Value Type='Integer'>2</Value></Eq></Where></Query></View>"

foreach($pageItem in $newsPages){
    # 记录原修改信息
    $originalEditorId = $pageItem["Editor"].LookupId
    $originalModifiedTime = $pageItem["Modified"]

    # 修改页面属性(示例:更新自定义字段值)
    Set-PnPListItem -List "Site Pages" -Identity $pageItem.Id -Values @{
        "CustomNewsCategory" = "企业动态"  # 替换为你的自定义字段名称
        Editor = $originalEditorId
        Modified = $originalModifiedTime
    } -SystemUpdate

    Invoke-PnPQuery
}

关键说明

  • 仅修改元数据时,页面不会进入草稿状态,因此无需执行发布操作。
  • 使用-SystemUpdate确保修改属性的同时,完全保留原Modified By和Modified时间。

内容的提问来源于stack exchange,提问作者dev123

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 18:51:13