SharePoint Online PowerShell获取文件属性报错:指定对象不属于列表
1. 处理「Get-PnPFile : The object specified does not belong to a list」错误
- 错误原因:
Get-PnPFile -AsListItem仅支持文档库(本质是列表)内的文件,若$FileRelativeURL路径格式错误、指向非文档库文件,就会触发该错误。 - 修复方法:
- 校验
$FileRelativeURL格式:必须是站点相对路径,比如/Shared Documents/test.docx或Shared Documents/test.docx,确保指向目标文档库内的文件。 - 换用列表查询方式获取文件项(更可靠):
# 获取目标文档库 $targetLibrary = Get-PnPList -Identity "你的文档库名称" # 按文件名查询对应列表项 $fileListItem = Get-PnPListItem -List $targetLibrary -Query "<View><Query><Where><Eq><FieldRef Name='FileLeafRef'/><Value Type='Text'>目标文件名.docx</Value></Eq></Where></Query></View>" - 若坚持用
Get-PnPFile,可先取文件对象再关联列表项:$fileObj = Get-PnPFile -Url $FileRelativeURL $fileListItem = $fileObj.ListItemAllFields
- 校验
2. 解决「Cannot index into a null array」错误
- 错误原因:因为
Get-PnPFile -AsListItem执行失败返回null,导致$File1为空,访问字段时自然报错。 - 修复方法:
- 先判断列表项是否为空,再访问字段:
if ($fileListItem -ne $null) { $batchDateValue = $fileListItem["Batch_x0020_Date"] Write-Host "Batch Date: $batchDateValue" } else { Write-Host "未找到对应文件的列表项" } - 确认字段内部名称正确性:「Batch date」的内部名称可能不是
Batch_x0020_Date,执行以下命令获取真实内部名称:
用返回的Get-PnPField -List "你的文档库名称" | Where-Object {$_.Title -eq "Batch date"} | Select-Object InternalNameInternalName替换代码中的字段名,避免因名称不匹配导致取值失败。
- 先判断列表项是否为空,再访问字段:
3. 完整可运行示例脚本
# 连接到SharePoint Online站点 Connect-PnPOnline -Url "https://你的租户名.sharepoint.com/sites/你的站点名" -Interactive # 配置参数 $libraryName = "目标文档库名称" $targetFileName = "要查询的文件名.docx" $fieldTitle = "Batch date" # 获取文档库 $library = Get-PnPList -Identity $libraryName # 查询文件对应的列表项 $fileItem = Get-PnPListItem -List $library -Query "<View><Query><Where><Eq><FieldRef Name='FileLeafRef'/><Value Type='Text'>$targetFileName</Value></Eq></Where></Query></View>" # 获取并输出字段值 if ($fileItem -ne $null) { # 获取字段内部名称 $targetField = Get-PnPField -List $library | Where-Object {$_.Title -eq $fieldTitle} if ($targetField -ne $null) { $batchDate = $fileItem[$targetField.InternalName] Write-Host "Batch Date 值:$batchDate" } else { Write-Host "未找到标题为'$fieldTitle'的字段" } } else { Write-Host "未找到文件:$targetFileName" }
内容的提问来源于stack exchange,提问作者gokulnath
相关产品推荐
相关产品推荐

