SharePoint 목록 항목의 등록자 및 등록 날짜 및 시간 편집
11682 단어 SharePointCSOMPowerShell
기사 개요
SharePoint의 리스트 아이템은 등록을 한 유저와 그 일시가 각각 「등록자」열, 「등록 일시」열로 설정되어, 이 2개의 열은 SharePoint의 UI상에서는 편집할 수 없다. 본 기사에서는 어떠한 이유로 등록자나 등록 일시를 편집하고 싶은 경우에 실천 가능한 접근법을 게재하고 있다.
목적
등록자와 등록 일시를 편집하는 목적으로는, 이하의 2점이 생각된다.
등록자와 등록 일시를 편집하는 목적으로는, 이하의 2점이 생각된다.
파일 서버 등에서 SharePoint로 데이터를 마이그레이션하는 경우, 데이터의 본래의 속성을 유지하는 것 외에도 새롭게 유저열이나 일시열을 작성해 거기에 등록일에 해당하는 프로퍼티를 설정한다고 하는 접근법이 생각된다 그러나, 복수의 열이 혼재해 보수성에 어려움이 있다. 따라서, 기본 열만으로 등록자나 등록 일시를 편집하는 어프로치를 채용하는 경우에 하기의 실장예가 유용하게 된다.
구현 예
본 기사에서는 Powershell을 이용한 2례를 게재하고 있다.
「리스트의 설정」화면에서 열명을 마우스 오버하면 열의 설정 화면의 URL이 표시되지만, 그 말미가 열의 내부명이 된다. 등록자는 Author, 등록 일시는 Created라는 내부명이 설정되어 있는 것을 알 수 있으므로, 이것을 바탕으로 PowerShell로 각 열을 편집해 간다.
두 가지 방법 모두 실행 결과가 동일하기 때문에 전제 조건에 적합한 방법과 접근하기 쉬운 방법을 채택하고 "# 사이트 정보""# 편집 할 열"부분의 변수를 자신의 환경에 맞게 변경하고 실행 하자.
SharePoint CSOM을 사용한 구현 방법
사전에 SharePoint Online Client Components SDK을 설치하십시오.
Set-ListItem.ps1# 実行ユーザーおよびサイトの情報
$SiteURL = "https://tenant.sharepoint.com/sites/test"
$ListTitle = "EditList"
$UserName = "[email protected]"
# 編集する列
$AuthorID = "[email protected]"
[datetime]$Created = "9999年12月31日 23:59:59"
# パスワード
$Password= Read-Host -Prompt "Enter the password" -AsSecureString
# ライブラリ読み込み
Add-Type -Path ([System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client").location)
Add-Type -Path ([System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client.runtime").location)
# 認証
$Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($UserName, $Password)
# SharePoint Client Context インスタンスを生成
$Context = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
$Context.Credentials = $Credentials
# 登録者となるユーザーを取得
$Author = $Context.Web.EnsureUser($AuthorID)
$Context.Load($Author)
# サイト配下のリストを取得
$lists = $Context.Web.Lists
$context.Load($lists)
# タイトルからリストを取得
$list = $lists.GetByTitle($ListTitle)
$Context.Load($list)
# IDからアイテムを取得
$Item = $List.GetItemById(1)
$Context.Load($Item)
# 登録者と登録日時を編集
$Item["Author"] = $Author
$Item["Created"] = $Created
$Item.Update()
$Context.ExecuteQuery()
PnP PowerShell을 사용한 구현 방법
사전에 install-module cmdlet을 실행합니다. 아래는 SharePointOnline에 연결하는 경우의 명령입니다.
Install-Module SharePointPnPPowerShellOnline
Set-ListItem.ps1# サイトの情報
$SiteURL = "https://tenant.sharepoint.com/sites/test"
$ListTitle = "EditList"
# 編集する列
$Author = "[email protected]"
[datetime]$Created = "9999年12月31日 23:59:59"
# 認証
Import-Module SharePointPnPPowerShellOnline -DisableNameChecking
Connect-PnPOnline -Url $SiteURL -Credentials (Get-Credential)
# 登録者と登録日時を編集
Set-PnPListItem -List $ListTitle -Identity 1 -Values @{"Author" = $Author; "Created" = $Created}
이런 느낌이 된다.
편집 가능한 범위
등록자
상기 방법에서는, 실행 시점에서 편집 권한이 없는 사용자나 그룹을 등록자로서 변경 가능한 점에 유의할 필요가 있다.
등록일시
1900/01/01 00:00:00부터 9999/12/31 23:59:59까지 등록할 수 있습니다.
유의사항
· 프로덕션 환경에서의 편집은 필요 최소한으로 유지
본래 UI상에서는 편집할 수 없는 열이며, 부주의하게 편집하는 것은 데이터의 변조에 해당한다.
「목적」에도 기재한 바와 같이, 편집하는 정당한 목적을 명확하게 하고, 프로덕션 환경에서 실행하는 경우는 타이밍을 한정하는 것이 바람직하다.
· 버전 기록 사용
위에서 설명한 대로 "누가 어떻게 변경했는지"를 기록하기 위해 SharePoint 버전 기록을 사용하도록 설정해야 합니다. 실행 사용자가 업데이트자로 기록됩니다.
참고문헌
PnP PowerShell 개요
Set-PnPListItem
# 実行ユーザーおよびサイトの情報
$SiteURL = "https://tenant.sharepoint.com/sites/test"
$ListTitle = "EditList"
$UserName = "[email protected]"
# 編集する列
$AuthorID = "[email protected]"
[datetime]$Created = "9999年12月31日 23:59:59"
# パスワード
$Password= Read-Host -Prompt "Enter the password" -AsSecureString
# ライブラリ読み込み
Add-Type -Path ([System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client").location)
Add-Type -Path ([System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client.runtime").location)
# 認証
$Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($UserName, $Password)
# SharePoint Client Context インスタンスを生成
$Context = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
$Context.Credentials = $Credentials
# 登録者となるユーザーを取得
$Author = $Context.Web.EnsureUser($AuthorID)
$Context.Load($Author)
# サイト配下のリストを取得
$lists = $Context.Web.Lists
$context.Load($lists)
# タイトルからリストを取得
$list = $lists.GetByTitle($ListTitle)
$Context.Load($list)
# IDからアイテムを取得
$Item = $List.GetItemById(1)
$Context.Load($Item)
# 登録者と登録日時を編集
$Item["Author"] = $Author
$Item["Created"] = $Created
$Item.Update()
$Context.ExecuteQuery()
Install-Module SharePointPnPPowerShellOnline
# サイトの情報
$SiteURL = "https://tenant.sharepoint.com/sites/test"
$ListTitle = "EditList"
# 編集する列
$Author = "[email protected]"
[datetime]$Created = "9999年12月31日 23:59:59"
# 認証
Import-Module SharePointPnPPowerShellOnline -DisableNameChecking
Connect-PnPOnline -Url $SiteURL -Credentials (Get-Credential)
# 登録者と登録日時を編集
Set-PnPListItem -List $ListTitle -Identity 1 -Values @{"Author" = $Author; "Created" = $Created}
등록자
상기 방법에서는, 실행 시점에서 편집 권한이 없는 사용자나 그룹을 등록자로서 변경 가능한 점에 유의할 필요가 있다.
등록일시
1900/01/01 00:00:00부터 9999/12/31 23:59:59까지 등록할 수 있습니다.
유의사항
· 프로덕션 환경에서의 편집은 필요 최소한으로 유지
본래 UI상에서는 편집할 수 없는 열이며, 부주의하게 편집하는 것은 데이터의 변조에 해당한다.
「목적」에도 기재한 바와 같이, 편집하는 정당한 목적을 명확하게 하고, 프로덕션 환경에서 실행하는 경우는 타이밍을 한정하는 것이 바람직하다.
· 버전 기록 사용
위에서 설명한 대로 "누가 어떻게 변경했는지"를 기록하기 위해 SharePoint 버전 기록을 사용하도록 설정해야 합니다. 실행 사용자가 업데이트자로 기록됩니다.
참고문헌
PnP PowerShell 개요
Set-PnPListItem
PnP PowerShell 개요
Set-PnPListItem
Reference
이 문제에 관하여(SharePoint 목록 항목의 등록자 및 등록 날짜 및 시간 편집), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Shomi-Nijo/items/94e1e23190e74d3d59cc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)