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

[玩转系统] SharePoint Online:使用 PowerShell 更新创建者/修改者、创建/修改字段值

作者:精品下载站 日期:2024-12-14 21:03:56 浏览:16 分类:玩电脑

SharePoint Online:使用 PowerShell 更新创建者/修改者、创建/修改字段值


要求:使用 PowerShell 更新 SharePoint Online 中的“创建者”列。

有时,您可能需要创建列表项或将现有项的元数据字段(例如创建者、修改者、创建者和修改者值)设置为特定用户和时间戳。假设,您正在将数据从网络文件共享导入或迁移到 SharePoint Online,并且希望将此元数据保持与源内容相同。

由于 SharePoint 不允许您从 Web 用户界面设置这些值,因此我们必须使用 PowerShell。下面是我的 PowerShell 脚本,用于更改项目创建者、修改者以及创建和修改时间的详细信息。此脚本为列表/库中的特定项目设置系统字段(创建者、创建者、修改者、修改者)。适当设置变量部分中的值并运行脚本。

我不喜欢操纵这些元数据字段,除非确实需要!

SharePoint Online:使用 PowerShell 创建的更改

用于更新“创建者”、“修改者”、“创建于”、“修改于”字段值的 PowerShell 脚本:


#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"
  
##Variables for Processing
$SiteUrl = "https://crescent.sharepoint.com/sites/sales/"
$ListName= "Projects"
$ID=6
$UserID="[email protected]"
$TimeStamp = "2015/12/01 02:10:00 AM"

#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

#Get the User
$User = $Ctx.Web.EnsureUser($UserID)
$ctx.Load($user)

#Get the list Item
$List=$Ctx.Web.Lists.GetByTitle($ListName)
$ListItem = $List.GetItemById($ID) 
$Ctx.Load($ListItem)

#update created by column sharepoint online powershell
$ListItem["Author"] = $User
#Update Modified By
$ListItem['Editor'] = $User

#Set Created on & Modified on Time values
$ListItem["Created"] =  $TimeStamp
$ListItem["Modified"] = $TimeStamp

#Update List item
$ListItem.Update()
$ctx.ExecuteQuery()

Write-host "Metadata values updated Successfully!" -f Green

此 PowerShell 脚本在 SharePoint Online 中设置项目的元数据字段值,结果如下:

[玩转系统] SharePoint Online:使用 PowerShell 更新创建者/修改者、创建/修改字段值

对于本地 SharePoint,请使用此 PowerShell 脚本:使用 PowerShell 更新列表项的“创建者”、“上次修改”元数据字段

同样,对于文档,您可以使用以下代码来更新其元数据:


#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\SharePoint Online Management Shell\Microsoft.Online.SharePoint.PowerShell\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\SharePoint Online Management Shell\Microsoft.Online.SharePoint.PowerShell\Microsoft.SharePoint.Client.Runtime.dll"

#Variables
$SiteURL = "https://crescent.sharepoint.com/Sites/Marketing"

#Define Metadata
$CreatedBy = "[email protected]"
$ModifiedBy = "[email protected]"
$CreatedOn = "01/01/2017"
$ModifiedOn ="01/01/2018"

#Get Credentials to connect
$Cred = Get-Credential -Message "Enter the Admin Credentials:"

#Setup the context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
$Ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.UserName,$Cred.Password)

#Get the File
$File =  $Ctx.Web.GetFileByServerRelativeUrl("/sites/marketing/Migrate/Active%20Projects/Requirements.docx")
$Ctx.Load($File)
$Ctx.ExecuteQuery()

#Get 'Created By' and 'Modified By' Users
$Author = $Ctx.Web.EnsureUser($CreatedBy)
$Ctx.Load($Author)
$Editor= $Ctx.Web.EnsureUser($ModifiedBy)
$Ctx.Load($Editor)
$Ctx.ExecuteQuery()

#update Metadata of the File
$ListItem = $File.ListItemAllFields
$Listitem["Author"] = $Author
$ListItem["Editor"] = $Editor
$ListItem["Created"] =  $CreatedOn
$ListItem["Modified"] = $ModifiedOn
$ListItem.Update()
$Ctx.ExecuteQuery()

PnP PowerShell 更新列表项元数据

要设置元数据,例如创建、修改、创建者和修改者字段值,请使用此 PnP PowerShell:


#Parameters
$SiteURL= "https://crescent.sharepoint.com/sites/Projects"
$ListName = "Projects"
$ItemID = "2"

$Created = "2018-01-01T12:00:00-00:00"
$Modified = "2018-02-02T10:30:00-00:00"
$CreatedBy= "[email protected]"
$ModifiedBy= "[email protected]"

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

Set-PnPListItem -List $ListName -Identity $ItemID -Values @{"Created"=$Created;"Modified"=$Modified; "Author"= $CreatedBy; "Editor"= $ModifiedBy}

您可以使用它来更新 SharePoint Online 中的列表项和文档的元数据。同样,要设置现有文件的元数据,请使用:


#Parameters
$SiteURL = "https://crescent.sharepoint.com/sites/branding"
$ListName = "Brand"
$SiteRelativeURL = "/Brand/Technical Design.docx"
$CreatedBy= "[email protected]"
$Title = "New Design Document V2.docx"
 
#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Interactive
  
#Get the File from SharePoint
$File = Get-PnPFile -Url $SiteRelativeURL -AsListItem
  
#Update document properties
Set-PnPListItem -List $ListName -Identity $File.Id -Values @{"Title" = $Title; "Author" = $CreatedBy; "Editor" = $CreatedBy}

要更新文件夹的元数据值,请使用:


#Parameters
$SiteURL = "https://Crescent.sharepoint.com/sites/Sales"
$ListName = "Documents"
$FolderServerRelativeURL = "/sites/Sales/Shared Documents/Samples"

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

#Get the Folder
$Folder = Get-PnPFolder -Url $FolderServerRelativeURL -Includes ListItemAllFields

#Update Folder's Created By and Modified By Values
Set-PnPListItem -List $ListName -Identity $Folder.ListItemAllFields.Id -Values @{"Author" = "[email protected]"; "Editor"="[email protected]" } | Out-Null

文档库中所有文件的更新创建者和修改者

这次,我们更新 SharePoint Online 文档库中所有文件的创建者、修改者、创建者和修改者的字段值。


#Parameters
$SiteURL = "https://crescent.sharepoint.com/sites/Marketing"
$ListName = "Branding"
$CreatedBy = "[email protected]"
$ModifiedBy = "[email protected]"
$Created = "2018-01-01T12:00:00-00:00"
$Modified = "2018-02-02T10:30:00-00:00"

#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Interactive
   
#Get all Files from the document library
$ListItems = Get-PnPListItem -List $ListName -PageSize 2000 -Fields Author | Where {$_.FileSystemObjectType -eq "File"}
   
#Update document properties
$ListItems | ForEach-Object { 
    Set-PnPListItem -List $ListName -Identity $_.Id -Values @{"Created"=$Created; "Modified"=$Modified; "Author" = $CreatedBy; "Editor" = $ModifiedBy; } | Out-Null
    Write-host "Metadata Set to "$_.FieldValues.FileRef -f Green
    }

该脚本扫描并更新存储在库中的所有文档的元数据,包括所有文件夹中的文件。

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

取消回复欢迎 发表评论:

关灯