簡體   English   中英

如何使用PnP更新“修改者”和“創建者”字段

[英]How to Update the Modified By and Created By fields using PnP

我正在嘗試使用Add-PnPFile將文件共享從本地計算機上傳到SharePoint,我也擁有具有每個文件的所有屬性(“修改者”,“創建者”)的csv。

我在下面編寫了此代碼,以從csv文檔中獲取文件的所有屬性,並在使用Add-PnPFile命令上傳文件之前測試了用戶是否存在於租戶中。

Function Upload-Nom{
    Param (
            [parameter(Position=0,ValueFromPipeline=$True,ValueFromPipelineByPropertyName=$True)]
            [Alias('FullName')]
            [string[]]$Path = $PWD
            )
    Begin {}
    Process {
            ForEach ($item in $Path) {
                #iterate all the file urls in the csv
                Import-Csv $item | ForEach-Object {



                                    #capture all the properties you need to update the file properties on sharepoint
                                    $name = $_.Name
                                    $fullName = $_.FullName
                                    $itemtype = $_.'Item Type'
                                    $relativepath = $_.Path -replace '(sites\/honours\/)'
                                    $modifiedbyuser = $_.'Modified By'
                                    $createdbyuser = $_.'Created By'
                                    $modified = $_.Modified


                                    $path = $_.Path -replace '\/','\'
                                    $path = $path -replace '(sites\\honours\\)'
                                    $fullurl ="C:\Users\modonny\Downloads\" +$path+"\"+ $name



                                    #convert dates to SP format
                                    [DateTime]$dateformats = New-Object System.DateTime;
                                    if([DateTime]::TryParse($_.Modified, [ref]$dateformats)){            
                                       $cdob = $dateformats;            
                                    }

                                    $modifieduser = Get-PnPUser | ? Title -eq $modifiedbyuser
                                    $createduser = Get-PnPUser | ? Title -eq $createdbyuser
                                    #check if user exists in tenancy
                                    if($modifieduser){
                                        $muserid = $modifiedbyuser.Email

                                    }else{

                                        $muserid = "john.doe@test.gov.uk"

                                    }

                                    if($createduser){
                                        $cuserid = $createduser.Email

                                    }else{
                                        $createduser = Get-PnPUser | ? Email -EQ "john.doe@test.gov.uk"
                                        $cuserid = "john.doe@test.gov.uk"

                                    }



                                    $object = @{}
                                    $object.Add("Modified",$cdob)
                                    $object.Add("Editor" ,$muserid)
                                    $object.Add("Author" ,$cuserid)



                                        if($fullurl | Test-Path){
                                           if($itemtype -eq 'Folder'){
                                                write-host "this item is a folder"

                                            }else{

                                                #upload files to sharepoint with the data in the $object variable
                                                Add-PnPFile -Path $fullurl -Folder $relativepath -Values $object

                                            }

                                        }

                                    }

             }


    }


Upload-Nom -Path "C:\Users\modonny\Documents\testing.csv"

代碼運行完畢后,將上載所有文件,但不是“修改者/創建者”屬性。

示例腳本供您參考。

#region Variables 
$Username = "user@tenant.onmicrosoft.com" 
$Password = "password" 
$siteURL = "https://tenant.sharepoint.com/sites/Community" 

#endregion Variables

#region Credentials 
[SecureString]$SecurePass = ConvertTo-SecureString $Password -AsPlainText -Force 
[System.Management.Automation.PSCredential]$PSCredentials = New-Object System.Management.Automation.PSCredential($Username, $SecurePass) 
#endregion Credentials

Connect-PnPOnline -Url $siteURL -Credentials $PSCredentials

$user=Get-PnPUser | ? Email -eq "user1@tenant.onmicrosoft.com"
Add-PnPFile -Path "C:\Lee\test.docx" -Folder "MyDoc" -Values @{Editor=""+$user.Id+"";Modified="7/24/2019"}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM