对于包含散列 (#) 的文件夹名称,Add-PnPFolder 失败

Add-PnPFolder fails for folder names containing a hash (#)

我想使用 PowerShell pnp 在 SharePoint Online 中创建一个名称中带有井号标签 (#) 的文件夹,但以下命令失败并显示错误消息“参数必须是单个文件夹名称并且不能包含路径字符”。 (来自 SharePoint Online UI,它允许使用 # 创建 folders/files)。

Add-PnPFolder -Name "Test # Lists" -Folder "ABC/"

使用Add-PnPFile

上传名称中包含#的文件时出现同样的错误

我试过转义 (`#) 但它给出了同样的错误。还尝试使用“%23”对 # 进行编码,但它会创建一个名称中包含 %23 而不是 # 的文件夹。

非常感谢任何解决方案或解决方法。

您可以 运行 代码行创建不带“#”的文件夹:

Add-PnPFolder -Name 'Test Lists' -Folder 'ABC'

然后重命名文件夹:

Rename-PnPFolder -Folder 'ABC/Test Lists' -TargetFolderName 'Test # Lists'

并非所有 API 都支持使用 # 或 % 创建 files/folders。

https://docs.microsoft.com/en-us/sharepoint/dev/solution-guidance/supporting-and-in-file-and-folder-with-the-resourcepath-api

https://developer.microsoft.com/en-us/office/blogs/upcoming-changes-to-sharepoint-and-onedrive-for-business-apis-to-support-and-in-file-names/

您可以使用 SharePoint Online Powershell 创建一个名称中带有“#”的文件夹。

Add-Type -Path "C:\Program Files\Common Files\microsoft shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.dll"  
Add-Type -Path "C:\Program Files\Common Files\microsoft shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"  

$SiteUrl = "https://contoso.sharepoint.com/sites/dev"
$ListURL="/sites/dev/lib"
$FolderName="Reports#"
$UserName="amos@contoso.onmicrosoft.com"
$Password ="Password"
  
#Setup Credentials to connect
$Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($UserName,(ConvertTo-SecureString $Password -AsPlainText -Force))
 
Try {
    #Set up the context
    $Context = New-Object Microsoft.SharePoint.Client.ClientContext($SiteUrl)
    $Context.Credentials = $credentials
   
    #Get the List Root Folder
    $ParentFolder=$Context.web.GetFolderByServerRelativeUrl($ListURL)
 
    #sharepoint online powershell create folder
    $Folder = $ParentFolder.Folders.Add($FolderName)
    $ParentFolder.Context.ExecuteQuery()
 
    Write-host "New Folder Created Successfully!" -ForegroundColor Green
}
catch {
    write-host "Error: $($_.Exception.Message)" -foregroundcolor Red
}

& 也不支持。似乎类似的问题已针对“复制”例程修复,但直到现在还未针对“添加”例程修复。看起来 String 与这些字符断开,它还会混淆浏览器以呈现可以假定为参数的文件名