PowerShell - 读取 SharePoint 文件属性(修改日期等)
Posted
技术标签:
【中文标题】PowerShell - 读取 SharePoint 文件属性(修改日期等)【英文标题】:PowerShell - read SharePoint file properties (datemodified, etc) 【发布时间】:2019-09-10 11:16:37 【问题描述】:我需要将 SharePoint 中的文件与本地文件进行比较,并确保它们的版本相同(它是脱机开发并在多个客户端 SharePoint 位置共享的 accdb)。我需要从 SharePoint 中的文件中获取修改日期,但我一直无法这样做。
注意:我没有可用的 Get-SPWeb,因为它需要由无法使用 SharePoint 2013 命令行管理程序的各种用户运行 (reference)。
我已尝试将 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
根据this,“-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 已安装并正常工作。)
上面的代码不包括从我的本地文件中获取信息;我还没有走到那一步。我想here 的说明会起作用。我的问题是从 SharePoint 中的文件中获取元数据。
感谢任何帮助或指出我正确的资源;我已经进行了几个小时的研究,结果一无所获。
【问题讨论】:
在阅读此内容后额外尝试了$file1 | Get-Member
:codykonior.com/2013/03/26/…。我得到了 lot 的输出。但不知道该怎么办。没有任何输出显示“这是修改日期”。 :-)
我认为最好的办法是使用 New-PSDrive
根据 this 将 SharePoint 位置映射到 PSDrive
。之后,您可以像普通文件系统一样轻松访问它并查阅LastWriteTime
属性。
而且,that 就是为什么我在任何地方都找不到如何做到这一点的原因。谢谢你。如果您将其发布为答案,我会标记它。或者我应该删除这个问题?
【参考方案1】:
最好的办法是将 SharePoint 驱动器映射为系统上的 PSDrive
。然后您可以将其视为常规文件系统,并且属性LastWriteTime
将可用。
有关New-PSDrive
的更多信息可以在documentation online 中找到,或者在PowerShell 控制台/ISE 中键入Get-Help New-PSDrive
。
【讨论】:
以上是关于PowerShell - 读取 SharePoint 文件属性(修改日期等)的主要内容,如果未能解决你的问题,请参考以下文章
powershell PowerShell:读取SQL错误日志
powershell PowerShell:使用.NET读取远程注册表值
powershell PowerShell:读取Windows Installer(MSI)数据库的函数
为啥我的Windows powershell读取结果有一堆90m