我需要将 SharePoint 中的文件与本地文件进行比较,并确保它们的版本相同(它是脱机开发并在多个客户端 SharePoint 位置共享的 accdb)。我需要从 SharePoint 中的文件中获取修改日期,但我一直无法这样做。
注意:我没有可用的 Get-SPWeb,因为这需要由无法使用 SharePoint 2013 命令行管理程序的各种用户运行(参考)。
我尝试将 Get-PnPFile 与 -AsListItem 一起使用,它不会返回错误,但我无法访问任何属性。
我已经尝试过 .FieldValuesAsText 和 .ListItemAllFields 并且没有得到任何结果。
通过 SharePointPnPPowerShellOnline 连接到 SharePoint 资源的这一位正在工作:
$SiteURL = "https://myorg.sharepoint.com/sites/mysite"
$FileRelativeURL = "Shared Documents/mydb.accdb"
$UserName = "user@myorg.org"
$PlainPassword = "myP@ssw0rd#"
$SecurePassword = $PlainPassword | ConvertTo-SecureString -AsPlainText -Force
$Cred = New-Object System.Management.Automation.PSCredential -ArgumentList $UserName, $SecurePassword
Connect-PnPOnline -Url $SiteURL -Credentials $Cred
我试过了,它会下载文件;我不需要这样做:
$file1 = Get-PnPFile -Url $FileRelativeURL -AsFile
据此, “-AsListItem”将文件作为列表项返回,显示其所有属性。所以我试了一下。它没有下载文件,也没有返回错误,所以也许我现在有一个可以查询的对象?
$file1 = Get-PnPFile -Url $FileRelativeURL -AsListItem
write-host $file1
第二行返回Microsoft.SharePoint.Client.ListItem
。
以下返回空字符串:
write-host $file1.Name
write-host $file1.TimeLastModified
write-host $file1.LastModified
write-host $file1[-1]
write-host $file1[0,1,2,3,4,5,6,7,8,9]
发现某处提到的 FieldValuesAsText,所以我试了一下:
$props = $file1.FieldValuesAsText
write-host $props
write-host $props[0]
第一个返回Microsoft.SharePoint.Client.FieldStringValues
;第二个返回一个空字符串。
试过 ListItemAllFields:
$props = $file1.ListItemAllFields
write-host $props
write-host $props[0]
第一行没有产生错误;第二行返回一个空字符串;第三行返回:
Cannot index into a null array.
At line:1 char:1
+ write-host $props[0]
+ ~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : NullArray
对 PowerShell 来说非常新,我可能遗漏了一些明显的东西。(SharePointPnPPowerShellOnline 已安装并正常工作。)
上面的代码不包括从我的本地文件中获取信息;我还没有走到那一步。我想这里的说明会起作用。我的问题是从 SharePoint 中的文件中获取元数据。
感谢任何帮助或指出我正确的资源;我已经进行了几个小时的研究,但结果一无所获。