Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用powershell共享OneDrive文件?_Powershell_Sharepoint_File Permissions_Onedrive - Fatal编程技术网

如何使用powershell共享OneDrive文件?

如何使用powershell共享OneDrive文件?,powershell,sharepoint,file-permissions,onedrive,Powershell,Sharepoint,File Permissions,Onedrive,我的OneDrive的子文件夹中有3个文件,比如“Documens/TopFolder/SubFolder” 我可以使用列出此子文件夹中的3个文件 Get-PnPFolder -FolderRelativeUrl "Documens/TopFolder/SubFolder" 现在我想与3个不同的用户共享这3个文件,比如 文件1与User1@abc.com 文件2与User2@abc.com 归档3User3@abc.com 我是组织中的用户,因此我没有对共享点的管理员访问权限。我刚开始学习

我的OneDrive的子文件夹中有3个文件,比如“Documens/TopFolder/SubFolder”

我可以使用列出此子文件夹中的3个文件

Get-PnPFolder -FolderRelativeUrl "Documens/TopFolder/SubFolder"
现在我想与3个不同的用户共享这3个文件,比如

  • 文件1与User1@abc.com
  • 文件2与User2@abc.com
  • 归档3User3@abc.com
我是组织中的用户,因此我没有对共享点的管理员访问权限。我刚开始学习powershell

问题是:

  • 如何将这3个文件放入
    get PnPListItem

  • 如何使用windows powershell为每个文件授予权限

  • 如何获取每个文件的annonymus weburl链接以与单个用户共享


  • 您可以使用
    Set PnPListItemPermission
    授予用户权限。例如:

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

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


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


    是否有任何PnpAPI可以获取OneDrive上文件的匿名URL链接,我可以将其放入电子邮件的正文字符串中

    谢谢Michael Han的调查。但是,如何知道每个文件的-Identity?
    Set-PnPListItemPermission -List 'Documents' -Identity 1 -User 'user@contoso.com' -AddRole 'Contribute'
    
    #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"