无法复制元数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法复制元数据相关的知识,希望对你有一定的参考价值。
背景:
我有以下脚本,它应该将单个文件从一个位置复制到另一个位置,并复制修改日期元数据。
这一切都有效,除了它不复制修改日期元数据并显示在修改日期元数据字段/列中复制文件的日期/时间:
当我将源文件修改日期输出到屏幕时,它显示正确的修改日期,但似乎没有应用于新位置的文件。
脚本:
Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
#Variables for Processing
$WebURL="https://sharepoint.oshirowanen.com/sites/oshirodev"
$SourceFile="https://sharepoint.oshirowanen.com/sites/oshirodev/folder1/user1/test.doc"
$TargetLibrary="folder2"
#Get Objects
$Web = Get-SPWeb $WebURL
$SourceFile = $Web.GetFile($SourceFile)
$TargetLibrary = $Web.GetFolder($TargetLibrary)
#Copy the file into the Target library
$File = $TargetLibrary.Files.Add($SourceFile.Name, $SourceFile.OpenBinary(), $true)
#Copy Meta-Data
#METADATA UPDATE DOES NOT WORK
$item = $File.Item
#Original attempt - not working
#$item["Modified"] = $SourceFile.TimeLastModified.ToLocalTime()
#Suggested attempt 2 - not working
#$itemModified = ([DateTime]$SourceFile.Item["Modified"]).DateTime
#$item["Modified"] = $itemModified
#Suggested attempt 2
$File.item["Modified"] = $SourceFile.item["Modified"]
##Check value of sourcefiles modifieddate - shows correct modified date
write-host $SourceFile.item["Modified"]
#Update
$item.UpdateOverwriteVersion()
OUTPUT:
但是,写主机显示正确的修改日期:
PS C:UsersOshiroDesktopscripts> .MetaData.ps1
10 August 2018 10:00:07
PS C:UsersOshiroDesktopscripts>
题:
谁能看到我做错了什么?
EXPORT-SPWEB ATTEMPT:
脚本:
Export-SPWeb -Identity "https://sharepoint.oshirowanen.com/sites/oshirodev/folder1/user1/" -ItemUrl "lists/Customlist" -Path "c:sharepoint_exportcustomlist_export.cmp" -IncludeUserSecurity
错误:
Export-SPWeb : Cannot find an SPWeb object with Id or Url : https://sharepoint.oshirowanen.com/sites/oshirodev/folder1/user1/.
At line:1 char:13
+ Export-SPWeb <<<< -Identity "https://sharepoint.oshirowanen.com/sites/oshirodev/folder1/user1/" -ItemUrl "lists/Customlist" -Path "c:sharepoint_exportcustomlist_export.cmp" -IncludeUserSecurity
+ CategoryInfo : InvalidData: (Microsoft.Share...CmdletExportWeb:SPCmdletExportWeb) [Export-SPWeb], SPCmdletPipeBindException
+ FullyQualifiedErrorId : Microsoft.SharePoint.PowerShell.SPCmdletExportWeb
您的脚本对我来说很好,只应更改一行(这些列通常被认为是只读的,但可以修改它们):
# new_file["Modified"] = original_file["Modified"]
$File.item["Modified"] = $SourceFile.item["Modified"]
您将找到有关此问题的一些主题。有些帖子会告诉你,export-spweb
和import-spweb
不会保留创建/修改日期,创建者等等项目,这些项目现在都不正确。
除了固定线路,你可以检查这些:
- GUI去AZ小说网POI
通过GUI启用IncludeUserSecurity
。您需要:中央管理控制台/备份部分上的复选框 - >'导出完全安全'
IncludeUserSecurity
您可以使用包含参数-IncludeUserSecurity
的Export-SPWeb和Import-SPWeb编写脚本
编辑 - 由于评论 - 使用[-IncludeUserSecurity]
仅导出文件列表
正如oshirowanen正确指出的那样,您无法导出具有Export-SPWeb的单个文件 - 您只能导出:整个站点,列表或库。
我将介绍如何导出/导入列表:
通过Export-SPWeb
导出列表(网站集不是root):
Export-SPWeb
注意:不要忘记在网站集名称中包含最后一个反斜杠。
(要创建:Export-SPWeb -Identity "https://sharepoint.oshirowanen.com/sites/oshirodev/folder1/user1/" -ItemUrl "lists/Customlist" -Path "c:sharepoint_exportcustomlist_export.cmp" -IncludeUserSecurity
,a list in SharePoint或通过edit a list创建自定义列表)。
要导入列表应该很简单:
Sharepoint designer
以上是关于无法复制元数据的主要内容,如果未能解决你的问题,请参考以下文章