【问题标题】:Sharepoint online - MoveFile - pnp.powershell Status UpdatesSharepoint 在线 - MoveFile - pnp.powershell 状态更新
【发布时间】:2021-12-23 10:52:24
【问题描述】:

我正在尝试将文件夹/文件从一个共享点站点移动到另一个站点,但我似乎无法让 Receive-PnPCopyMoveJobStatus 在我的 powershell 脚本中工作

目前,我可以监控文件/文件夹移动的唯一方法是监控源的回收站是否有更改。我希望能够按需取得进展,或者在开放的 powershell 中始终如一地取得进展。理想情况下,我希望看到一个百分号,甚至是一个详细的选项。

这是我整理的:

#Config Variables
$SiteURL = "https://<site>.sharepoint.com/
$SourceFolderURL= "sites/<site name>/<document library name>/<Folder or file location>"
$TargetFolderURL = "sites/<site name>/<document library name>"

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

#Sharepoint Copy/Move operation feedback
$Test = "Move-PnPFile -SourceUrl $SourceFolderURL -TargetUrl $TargetFolderURL -Overwrite -noWait"
$jobStatus = "Receive-PnPCopyMoveJobStatus -Job $Test"

if($jobStatus.JobState -eq 0)
{
  Write-Host "Job finished"
}

参考: https://docs.microsoft.com/en-us/powershell/module/sharepoint-pnp/receive-pnpcopymovejobstatus?view=sharepoint-ps

我没有成功运行它。当我填写站点名称、库名称和实际站点时,我得到的结果看起来像是完成了,但没有反馈,文件也没有移动。所以基本上什么都没有发生。

文件/文件夹移动的作用如下:

#Config Variables
$SiteURL = "https://<site>.sharepoint.com/"
$SourceFolderURL= "sites/<site name>/<document library>/<folder name>"
$TargetFolderURL = "sites/<site name>/<document library>"
 
#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -interactive
 
#sharepoint online powershell move folder
Move-PnPFile -SourceUrl $SourceFolderURL -TargetUrl $TargetFolderURL -overwrite 


#Read more: https://www.sharepointdiary.com/2017/06/how-to-move-folder-in-sharepoint-online.html#ixzz7Bkp822M1

任何有关更正此脚本的帮助,或查看 SharePoint 上复制或移动操作进度的其他方法,我们将不胜感激!

【问题讨论】:

    标签: powershell sharepoint-online script


    【解决方案1】:

    源网址应该像"&lt;document library&gt;/&lt;file name&gt;" 请尝试以下脚本

    $SiteURL = "https://<site>.sharepoint.com/sites/<sitesname>
    $SourceFolderURL= "<document library name>/<file name>"
    $TargetFolderURL = "<document library name>/<target file name>"
    
    $job = Move-PnPFile -SiteRelativeUrl $SourceFolderURL -TargetUrl $TargetFolderURL -Overwrite
    $jobStatus = Receive-PnPCopyMoveJobStatus -Job $result
    if($jobStatus.JobState == 0)
    {
      Write-Host "Job finished"
    }
    

    【讨论】:

    • 感谢您的回复。我尝试更改站点 URL,但收到错误消息。当我使用我发布的原始脚本时,它不会出错,除了在 Receive-PnPCopyMoveJobStatus 点。我使用了您发布的脚本并收到此错误(但文件确实移动了)。
    • ``` Receive-PnPCopyMoveJobStatus :无法将参数绑定到参数“Job”,因为它为空。在 C:\Users\Eric\Downloads\Powershell Script\INCOMPLETE 记录进度 - 移动文件夹或文件 - PnPPowershell.ps1:24 char:48 + $jobStatus = Receive-PnPCopyMoveJobStatus -Job $result + ~~~~~~~ + CategoryInfo :无效数据:(:) [Receive-PnPCopyMoveJobStatus],ParameterBindingValidationException + FullyQualifiedErrorId:ParameterArgumentValidationErrorNullNotAllowed,PnP.PowerShell.Commands.Files.ReceiveCopyMoveJobStatus ```
    • 以下是文件传输的有效方法,但状态无效:code #Config Variables $SiteURL = "https://&lt;sitre&gt;.sharepoint.com" $SourceFolderURL= "/sites/sharedfiles/shared Documents/TEST2" $TargetFolderURL = "/sites/Customers/shared Documents" #Connect to PnP Online Connect-PnPOnline -Url $SiteURL -interactive #Status $job = Move-PnPFile -SiteRelativeUrl $SourceFolderURL -TargetUrl $TargetFolderURL -Overwrite $jobStatus = Receive-PnPCopyMoveJobStatus -Job $result if($jobStatus.JobState -eq 0) { Write-Host "Job finished" }
    【解决方案2】:

    您的非工作脚本包含:

    $Test = "Move-PnPFile -SourceUrl $SourceFolderURL -TargetUrl $TargetFolderURL -Overwrite -noWait"
    $jobStatus = "Receive-PnPCopyMoveJobStatus -Job $Test"
    

    这两个变量值都是字符串。它们除了存在之外什么都不做,并且不会导致任何命令运行。 $jobStatus.JobState 将始终为 null 并且永远不会为零,因为 JobState 不是字符串的属性,因此永远不会满足 if 条件。

    如果您想运行这些命令,请不要将它们写成双引号内的字符串,但就像它们在您所引用的文档中一样。您实际上可以运行它们并捕获它们的输出,例如

    $jobStatus = Receive-PnPCopyMoveJobStatus -Job $Test
    

    您也可以只复制并粘贴示例并更新参数值(尽管第二行似乎有错误的变量名称,您已经修复了)。一旦命令运行,您可能会遇到更多错误,这应该提供更多诊断信息。确保您在同一脚本中完成所有连接、请求移动和检索状态信息。

    【讨论】:

    • 感谢迈克尔的反馈!我这周才有时间再次处理这个问题。我会试试这个并报告。
    • = :术语“=”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确并重试。文件移动到它们的位置,但没有状态消息。 ``` #Connect to PnP Online Connect-PnPOnline -Url $SiteURL -interactive #Status $job = Move-PnPFile -SourceUrl $SourceFolderURL -TargetUrl $TargetFolderURL -NoWait -Overwrite $jobStatus = Receive-PnPCopyMoveJobStatus -Job $job if($ jobStatus.JobState -eq 0) { Write-Host "工作完成" } ```
    • 如果您以= 开头而左侧没有任何内容,或者类似$x == 1(这是@ 的返回值的赋值) 987654326@).
    • 好的,我想我还没有完全理解我在这里缺少什么。
    • 是的,我没有从您编写的脚本或评论中的单行版本中看到明显的地方。如果您在可以执行此操作的作业中有一个不寻常的换行符,或者可能有其他一些真正触发错误的周围脚本。我建议添加一些调试输出,看看它开始出错的地方。它可能会靠近一个= 标志,左侧有一些非典型的东西。
    猜你喜欢
    • 2021-04-13
    • 1970-01-01
    • 2021-12-23
    • 2023-01-28
    • 2020-03-18
    • 1970-01-01
    • 2021-11-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多