-
Notifications
You must be signed in to change notification settings - Fork 356
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #3177 from gautamdsheth/feature/add-org-sharinglink
Feature: add organizational sharing link cmdlets for files and folder
- Loading branch information
Showing
6 changed files
with
294 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,89 @@ | ||
--- | ||
Module Name: PnP.PowerShell | ||
schema: 2.0.0 | ||
applicable: SharePoint Online | ||
online version: https://pnp.github.io/powershell/cmdlets/Add-PnPFileOrganizationalSharingLink.html | ||
external help file: PnP.PowerShell.dll-Help.xml | ||
title: Add-PnPFileOrganizationalSharingLink | ||
--- | ||
|
||
# Add-PnPFileOrganizationalSharingLink | ||
|
||
## SYNOPSIS | ||
Creates an organizational sharing link for a file. | ||
|
||
## SYNTAX | ||
|
||
```powershell | ||
Add-PnPFileOrganizationalSharingLink -FileUrl <String> -Type <PnP.Core.Model.Security.ShareType> [-Connection <PnPConnection>] | ||
``` | ||
|
||
## DESCRIPTION | ||
|
||
Creates a new organization sharing link for a file. | ||
|
||
## EXAMPLES | ||
|
||
### EXAMPLE 1 | ||
```powershell | ||
Add-PnPFileOrganizationalSharingLink -FileUrl "/sites/demo/Shared Documents/Test.docx" | ||
``` | ||
|
||
This will create an organization sharing link for `Test.docx` file in the `Shared Documents` library which will be viewable by users in the organization. | ||
|
||
### EXAMPLE 2 | ||
```powershell | ||
Add-PnPFileOrganizationalSharingLink -FileUrl "/sites/demo/Shared Documents/Test.docx" -Type Edit | ||
``` | ||
|
||
This will create an organization sharing link for `Test.docx` file in the `Shared Documents` library which will be editable by users in the organization. | ||
|
||
## PARAMETERS | ||
|
||
### -Connection | ||
Optional connection to be used by the cmdlet. Retrieve the value for this parameter by either specifying -ReturnConnection on Connect-PnPOnline or by executing Get-PnPConnection. | ||
|
||
```yaml | ||
Type: PnPConnection | ||
Parameter Sets: (All) | ||
|
||
Required: False | ||
Position: Named | ||
Default value: None | ||
Accept pipeline input: False | ||
Accept wildcard characters: False | ||
``` | ||
### -FileUrl | ||
The file in the site | ||
```yaml | ||
Type: String | ||
Parameter Sets: (All) | ||
|
||
Required: True | ||
Position: Named | ||
Default value: None | ||
Accept pipeline input: False | ||
Accept wildcard characters: False | ||
``` | ||
### -ShareType | ||
The type of sharing that you want to, i.e do you want to enable people in your organization to view the shared content or also edit the content? | ||
Supported values are `View` and `Edit` | ||
|
||
```yaml | ||
Type: PnP.Core.Model.Security.ShareType | ||
Parameter Sets: (All) | ||
Required: False | ||
Position: Named | ||
Default value: View | ||
Accept pipeline input: False | ||
Accept wildcard characters: False | ||
``` | ||
|
||
## RELATED LINKS | ||
|
||
[Microsoft 365 Patterns and Practices](https://aka.ms/m365pnp) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,89 @@ | ||
--- | ||
Module Name: PnP.PowerShell | ||
schema: 2.0.0 | ||
applicable: SharePoint Online | ||
online version: https://pnp.github.io/powershell/cmdlets/Add-PnPFolderOrganizationalSharingLink.html | ||
external help file: PnP.PowerShell.dll-Help.xml | ||
title: Add-PnPFolderOrganizationalSharingLink | ||
--- | ||
|
||
# Add-PnPFolderOrganizationalSharingLink | ||
|
||
## SYNOPSIS | ||
Creates an organizational sharing link for a folder. | ||
|
||
## SYNTAX | ||
|
||
```powershell | ||
Add-PnPFolderOrganizationalSharingLink -Folder <FolderPipeBind> -Type <PnP.Core.Model.Security.ShareType> [-Connection <PnPConnection>] | ||
``` | ||
|
||
## DESCRIPTION | ||
|
||
Creates a new organization sharing link for a folder. | ||
|
||
## EXAMPLES | ||
|
||
### EXAMPLE 1 | ||
```powershell | ||
Add-PnPFolderOrganizationalSharingLink -Folder "/sites/demo/Shared Documents/Test" | ||
``` | ||
|
||
This will create an organization sharing link for `Test` folder in the `Shared Documents` library which will be viewable by users in the organization. | ||
|
||
### EXAMPLE 2 | ||
```powershell | ||
Add-PnPFolderOrganizationalSharingLink -Folder "/sites/demo/Shared Documents/Test" -Type Edit | ||
``` | ||
|
||
This will create an organization sharing link for `Test` folder in the `Shared Documents` library which will be editable by users in the organization. | ||
|
||
## PARAMETERS | ||
|
||
### -Connection | ||
Optional connection to be used by the cmdlet. Retrieve the value for this parameter by either specifying -ReturnConnection on Connect-PnPOnline or by executing Get-PnPConnection. | ||
|
||
```yaml | ||
Type: PnPConnection | ||
Parameter Sets: (All) | ||
|
||
Required: False | ||
Position: Named | ||
Default value: None | ||
Accept pipeline input: False | ||
Accept wildcard characters: False | ||
``` | ||
### -Folder | ||
The folder in the site | ||
```yaml | ||
Type: FolderPipeBind | ||
Parameter Sets: (All) | ||
|
||
Required: True | ||
Position: Named | ||
Default value: None | ||
Accept pipeline input: False | ||
Accept wildcard characters: False | ||
``` | ||
### -ShareType | ||
The type of sharing that you want to, i.e do you want to enable people in your organization to view the shared content or also edit the content? | ||
Supported values are `View` and `Edit` | ||
|
||
```yaml | ||
Type: PnP.Core.Model.Security.ShareType | ||
Parameter Sets: (All) | ||
Required: False | ||
Position: Named | ||
Default value: View | ||
Accept pipeline input: False | ||
Accept wildcard characters: False | ||
``` | ||
|
||
## RELATED LINKS | ||
|
||
[Microsoft 365 Patterns and Practices](https://aka.ms/m365pnp) |
14 changes: 14 additions & 0 deletions
14
src/Commands/Model/SharePoint/FileOrganizationalSharingLinkResult.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
using PnP.Core.Model.Security; | ||
using System.Collections.Generic; | ||
|
||
namespace PnP.PowerShell.Commands.Model.SharePoint | ||
{ | ||
public class FileOrganizationalSharingLinkResult | ||
{ | ||
public string Id; | ||
|
||
public ISharingLink Link; | ||
|
||
public List<PermissionRole> Roles; | ||
} | ||
} |
6 changes: 6 additions & 0 deletions
6
src/Commands/Model/SharePoint/FolderOrganizationalSharingLinkResult.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
namespace PnP.PowerShell.Commands.Model.SharePoint | ||
{ | ||
public class FolderOrganizationalSharingLinkResult : FileOrganizationalSharingLinkResult | ||
{ | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
using PnP.Core.Model.Security; | ||
using PnP.Framework.Utilities; | ||
using PnP.PowerShell.Commands.Model.SharePoint; | ||
using System.Management.Automation; | ||
|
||
namespace PnP.PowerShell.Commands.Security | ||
{ | ||
[Cmdlet(VerbsCommon.Add, "PnPFileOrganizationalSharingLink")] | ||
public class AddFileOrganizationalSharingLink : PnPWebCmdlet | ||
{ | ||
[Parameter(Mandatory = true)] | ||
public string FileUrl; | ||
|
||
[Parameter(Mandatory = false)] | ||
public ShareType ShareType = ShareType.View; | ||
|
||
protected override void ExecuteCmdlet() | ||
{ | ||
var serverRelativeUrl = string.Empty; | ||
var ctx = Connection.PnPContext; | ||
|
||
ctx.Web.EnsureProperties(w => w.ServerRelativeUrl); | ||
|
||
if (!FileUrl.ToLower().StartsWith(ctx.Web.ServerRelativeUrl.ToLower())) | ||
{ | ||
serverRelativeUrl = UrlUtility.Combine(ctx.Web.ServerRelativeUrl, FileUrl); | ||
} | ||
else | ||
{ | ||
serverRelativeUrl = FileUrl; | ||
} | ||
|
||
var file = ctx.Web.GetFileByServerRelativeUrl(serverRelativeUrl); | ||
|
||
var shareLinkRequestOptions = new OrganizationalLinkOptions() | ||
{ | ||
Type = ShareType | ||
}; | ||
|
||
var share = file.CreateOrganizationalSharingLink(shareLinkRequestOptions); | ||
|
||
FileOrganizationalSharingLinkResult fileOrganizationalSharingLinkResult = new() | ||
{ | ||
Id = share.Id, | ||
Link = share.Link, | ||
Roles = share.Roles, | ||
}; | ||
|
||
WriteObject(fileOrganizationalSharingLinkResult); | ||
} | ||
} | ||
} |
44 changes: 44 additions & 0 deletions
44
src/Commands/Security/AddFolderOrganizationalSharingLink.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
using PnP.Core.Model.Security; | ||
using PnP.Core.Model.SharePoint; | ||
using PnP.PowerShell.Commands.Base.PipeBinds; | ||
using PnP.PowerShell.Commands.Model.SharePoint; | ||
using System.Management.Automation; | ||
|
||
namespace PnP.PowerShell.Commands.Security | ||
{ | ||
[Cmdlet(VerbsCommon.Add, "PnPFolderOrganizationalSharingLink")] | ||
public class AddFolderOrganizationalSharingLink : PnPWebCmdlet | ||
{ | ||
[Parameter(Mandatory = true)] | ||
public FolderPipeBind Folder; | ||
|
||
[Parameter(Mandatory = false)] | ||
public ShareType ShareType = ShareType.View; | ||
|
||
protected override void ExecuteCmdlet() | ||
{ | ||
var serverRelativeUrl = string.Empty; | ||
var ctx = Connection.PnPContext; | ||
|
||
ctx.Web.EnsureProperties(w => w.ServerRelativeUrl); | ||
|
||
IFolder folder = Folder.GetFolder(ctx); | ||
|
||
var shareLinkRequestOptions = new OrganizationalLinkOptions() | ||
{ | ||
Type = ShareType | ||
}; | ||
|
||
var share = folder.CreateOrganizationalSharingLink(shareLinkRequestOptions); | ||
|
||
FolderOrganizationalSharingLinkResult folderOrganizationalSharingLinkResult = new() | ||
{ | ||
Id = share.Id, | ||
Link = share.Link, | ||
Roles = share.Roles, | ||
}; | ||
|
||
WriteObject(folderOrganizationalSharingLinkResult); | ||
} | ||
} | ||
} |