如何使用 powershell 共享 OneDrive 文件?

How to share a OneDrive file using powershell?

我的 OneDrive 的子焊盘中有 3 个文件,比如 "Documens/TopFolder/SubFolder"

我可以使用

列出此子文件夹中的 3 个文件
Get-PnPFolder -FolderRelativeUrl "Documens/TopFolder/SubFolder"
File1.xlsx
File2.xlsx
File3.xlsx

现在我想与 3 个不同的用户共享这 3 个文件,比方说

我是我所在组织的用户,所以我没有共享点的管理员访问权限。我刚开始学习powershell。

问题是:

  1. 如何将这3个文件放入Get-PnPListItem

  2. 如何使用 windows powershell 为每个文件授予权限?

  3. 如何获取每个文件的 annonymus weburl link 以与个人用户共享?

您可以使用 Set-PnPListItemPermission 来授予用户权限。示例:

Set-PnPListItemPermission -List 'Documents' -Identity 1 -User 'user@contoso.com' -AddRole 'Contribute'

https://docs.microsoft.com/en-us/powershell/module/sharepoint-pnp/set-pnplistitempermission?view=sharepoint-ps

以下文章可能对您有所帮助:

https://www.sharepointdiary.com/2016/09/sharepoint-online-set-folder-permissions-powershell.html

https://www.sharepointdiary.com/2017/11/sharepoint-online-grant-permission-to-list-item-using-powershell.html

我找到了一种根据文件名填充 ListItem 并获取标识号的方法。 如下

#Set Variables
$SiteURL= "https://abc-my.sharepoint.com/personal/Testing/"
#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -UseWebLogin

$ListName="Documents"
#Get All Files from the document library - In batches of 500 and filter File Names Starting with "File_"
$ListItems = Get-PnPListItem -List $ListName -PageSize 500 | Where {$_["FileLeafRef"] -like "File_*"} 
ForEach($Item in $ListItems)
{


    $DocumentsData += New-Object PSObject -Property @{
    FileName = $Item.FieldValues['FileLeafRef']
    FileURL = $Item.FieldValues['FileRef']
    FileID = $Item.FieldValues['ID']
    }

}

$DocumentsData 

Set-PnPListItemPermission -List 'Documents' -Identity 1 -User 'Test1@abc.com' -AddRole 'Contribute'

Send-PnPMail -To Test1@abc.com -Cc Test2@abc.com  -Subject "Your OD File Link" -Body "Here is the WEB URL LINK"

是否有任何 PnpAPI 可以为 OneDrive 上的文件获取匿名 URL link,我可以将其放入电子邮件的 -Body 字符串中?