PowerShell无法重命名无扩展名的SharePoint 2019文件
问题根源
直接修改列表项的Name字段对无扩展名文件无效,因为SharePoint中文件的重命名需要操作文件对象(SPFile),而非仅修改列表项的属性值——无扩展名文件的元数据关联逻辑和带扩展名的不一样,单纯改列表项Name不会触发文件系统层面的重命名操作。
修正后的可行脚本
$web = Get-SPWeb "https://sp.domain.com/sites/somesite" $docs = $web.Lists["DocTest"] $rootFolderUrl = $web.ServerRelativeUrl + "/" + $docs.RootFolder.Url foreach($doc in $docs.Items){ Write-Host "当前文件: $($doc["Name"])" if($doc.Name -eq "test"){ $newFileName = 'test.pdf' # 获取对应文件对象,用MoveTo完成重命名 $file = $web.GetFile($doc.Url) $file.MoveTo("$rootFolderUrl/$newFileName", $true) Write-Host "重命名完成: $newFileName" } } # 释放SPWeb资源,避免内存占用 $web.Dispose()
注意事项
MoveTo方法的第二个参数$true代表如果目标文件已存在则覆盖,不需要覆盖的话改成$false即可- 必须通过
GetFile获取真实的文件对象,不能仅操作列表项 - 脚本执行需要对应SharePoint站点的编辑权限,否则会报错
内容的提问来源于stack exchange,提问作者Will73
相关产品推荐
相关产品推荐

