首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用powershell将文档库复制到文档库sharepoint online

使用powershell将文档库复制到文档库sharepoint online
EN

Stack Overflow用户
提问于 2021-04-12 10:02:25
回答 1查看 418关注 0票数 0

我正在制作一个PowerShell脚本,将内容从文档库复制到另一个文档库。到目前为止,我有以下代码

代码语言:javascript
复制
{
    # Define final variables
    $SourceUrlComplete = $SourceUrl + $SourceSite + "/" + $SourceSubSite
    $DestinationUrlComplete = $SourceUrl + "Contracts"

    # Set connections
    Write-host "Start copy process..." -f Yellow
    Write-host "1. Connect to $sourceUrlComplete" -f Yellow
    $SourceConnection = Connect-PnPOnline -Url $SourceUrlComplete -ClientId $ClientId -ClientSecret $ClientSecret -WarningAction Ignore -ReturnConnection
    Write-host "   Connected" -f DarkGreen
    Write-host "2. Connect to $TargetUrlComplete" -f Yellow
    $DestinationConnection = Connect-PnPOnline -Url $DestinationUrlComplete -ClientId $ClientId -ClientSecret $ClientSecret -WarningAction Ignore -ReturnConnection
    Write-host "   Connected" -f DarkGreen

    $SourceList = Get-PnPList -Identity $SourceLibrary -Includes RootFolder -Connection $SourceConnection
    $SourceListUrl = $SourceList.RootFolder.ServerRelativeUrl
    $DestinationList = Get-PnPList -Identity $DesitinationLibrary -Includes RootFolder -Connection $DestinationConnection
    $DestinationListUrl = $DestinationList.RootFolder.ServerRelativeUrl
}

这很管用,我有联系,我也有名单。我也可以使用Get-PnpListItem并将获得所有的列表项。现在留给我的是以下内容:

我需要查看项目,并根据自定义列检查目标target

  • Unfortunately,中存在的文件夹,将文件复制到中,源项中并不总是填充“标题”和“名称”

注意:列表位于两个不同的站点上。但是如果解决方案是在站点A上创建一个临时列表,那么将其复制到站点B,请让我知道这一点。

有人能告诉我下一步该怎么做吗?我要么在整个列表中处理其中一个问题,要么发消息说要使用spFileCollection.add()

EN

回答 1

Stack Overflow用户

发布于 2021-04-12 14:26:36

所以我现在所做的就是让这个函数

代码语言:javascript
复制
Function ProcessFiles {
    $SourceUrlComplete = $SourceUrl + $Site + "/" + $SubSite
    $DestinationUrlComplete = $SourceUrl + "Contracts"

    Write-host "Start copy process..." -f Yellow
    Write-host "  1. Connect to $sourceUrlComplete" -f Yellow
    $SourceConnection = Connect-PnPOnline -Url $SourceUrlComplete -ClientId $ClientId -ClientSecret $ClientSecret -WarningAction Ignore -ReturnConnection
    Write-host "     Connected" -f DarkGreen
    
    Write-host "  2. Connect to $DestinationUrlComplete" -f Yellow
    $DestinationConnection = Connect-PnPOnline -Url $DestinationUrlComplete -ClientId $ClientId -ClientSecret $ClientSecret -WarningAction Ignore -ReturnConnection
    Write-host "     Connected" -f DarkGreen

    Write-host "  3. Process files" -f Yellow 
        $SourceFiles = Get-PnPFolderItem -Connection $SourceConnection -FolderSiteRelativeUrl $SourceList -ItemType File
        $SourceListItems = Get-PnPListItem -List $SourceList -Connection $SourceConnection
        foreach ($SourceFile in $SourceFiles) {
            $process = "yes"
            foreach ($SourceListItem in $SourceListItems)
            {
                if ($SourceListItem["FileRef"] -eq $SourceFile.ServerRelativeUrl -and $process -eq "yes")
                {
                    $process = "no"
                    Write-host "     - $($SourceFile.ServerRelativeUrl)" -f DarkYellow
                
                    Get-PnPFile -Url $SourceFile.ServerRelativeUrl -Path $ProcessFolder -FileName $SourceFile.Name -AsFile -Connection $SourceConnection -Force
                        
                    $SourcePath = $ProcessFolder + "\" + $SourceFile.Name
                    $DestinationFolder = $SourceListItem["CustomerName"]
                    $DestinationItemValues = @{
                        "CustomerName" = $SourceListItem["CustomerName"]
                        "Title" = $SourceListItem["Title"]
                        "CustomerNo" = $SourceListItem["CustomerNo"]
                        "DocType" = $SourceListItem["DocType"]
                        "DocDate" = $SourceListItem["DocDate"]
                        "DocCode" = $SourceListItem["DocCode"]
                        "Modified" = $SourceListItem["Modified"]
                        "Created" = $SourceListItem["Created"]
                        "Visibility" = $SourceListItem["Visibility"]
                        "CompanyID" = $SourceListItem["CompanyID"]
                    }

                    $DestinationFolder = "Contracts"
                    if ($SourceSubSite -eq "BE")
                    {
                        $DestinationFolder = $DestinationFolder + "\SOME_FOLDER\" + $SourceListItem["CustomerName"]

                        Add-PnPFile -Path $SourcePath -Connection $DestinationConnection -Folder "$DestinationFolder" -Values $DestinationItemValues | Out-Null
                        Remove-Item $SourcePath -Recurse
                        Write-host "     - DONE" -f DarkGreen
                    }
                    else
                    {
                        Write-host "     - FAILED" -f Red
                    }
                }
            }
        }
    Write-host "     Done" -f DarkGreen
}

现在它可以工作了,但是我暂时下载了这个文件。我需要添加一些东西来替换新文件夹被确定的特殊字符。我不确定这是目前最好的方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67056446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档