CRUD operations against SharePoint Folder via SharePoint 2013 REST API
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
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client") | |
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client.Runtime") | |
. ".\Invoke-RestSPO.ps1" | |
<# | |
.SYNOPSIS | |
Retieve Folder | |
.DESCRIPTION | |
Read Folder operation via SharePoint 2013 REST API | |
url: http://site url/_api/web/GetFolderByServerRelativeUrl('/Shared Documents') | |
method: GET | |
headers: | |
Authorization: "Bearer " + accessToken | |
accept: "application/json;odata=verbose" or "application/atom+xml" | |
.NOTES | |
Prerequisite : Invoke-RestSPO function | |
.EXAMPLE | |
$Folder = Get-SPOFolder -WebUrl $WebUrl -UserName $UserName -Password $Password -FolderUrl '/Shared Documents/Folder To Read' | |
#> | |
Function Get-SPOFolder(){ | |
Param( | |
[Parameter(Mandatory=$True)] | |
[String]$WebUrl, | |
[Parameter(Mandatory=$True)] | |
[String]$UserName, | |
[Parameter(Mandatory=$False)] | |
[String]$Password, | |
[Parameter(Mandatory=$True)] | |
[String]$FolderUrl | |
) | |
$Url = $WebUrl + "/_api/web/GetFolderByServerRelativeUrl('" + $FolderUrl + "')" | |
Invoke-RestSPO $Url Get $UserName $Password | |
} | |
<# | |
.SYNOPSIS | |
Create Folder | |
.DESCRIPTION | |
Create Folder operation via SharePoint 2013 REST API. | |
url: http://site url/_api/web/folders | |
method: POST | |
body: { '__metadata': { 'type': 'SP.Folder' }, 'ServerRelativeUrl': '/document library relative url/folder name'} | |
Headers: | |
Authorization: "Bearer " + accessToken | |
X-RequestDigest: form digest value | |
accept: "application/json;odata=verbose" | |
content-type: "application/json;odata=verbose" | |
content-length:length of post body | |
.NOTES | |
Prerequisite : Invoke-RestSPO function | |
.EXAMPLE | |
$Folder = Create-SPOFolder -WebUrl $WebUrl -UserName $UserName -Password $Password -FolderUrl '/Shared Documents/Folder To Create' | |
#> | |
Function Create-SPOFolder(){ | |
Param( | |
[Parameter(Mandatory=$True)] | |
[String]$WebUrl, | |
[Parameter(Mandatory=$True)] | |
[String]$UserName, | |
[Parameter(Mandatory=$False)] | |
[String]$Password, | |
[Parameter(Mandatory=$True)] | |
[String]$FolderUrl | |
) | |
$Url = $WebUrl + "/_api/web/folders" | |
$folderPayload = @{ | |
__metadata = @{'type' = 'SP.Folder' }; | |
ServerRelativeUrl = $FolderUrl; | |
} | ConvertTo-Json | |
$contextInfo = Get-SPOContextInfo $WebUrl $UserName $Password | |
Invoke-RestSPO -Url $Url -Method Post -UserName $UserName -Password $Password -Metadata $folderPayload -RequestDigest $contextInfo.GetContextWebInformation.FormDigestValue | |
} | |
<# | |
.SYNOPSIS | |
Update Folder | |
.DESCRIPTION | |
Update Folder operation via SharePoint 2013 REST API. | |
url: http://site url/_api/web/GetFolderByServerRelativeUrl('/Folder Name') | |
method: POST | |
body: { '__metadata': { 'type': 'SP.Folder' }, 'Name': 'New name' } | |
Headers: | |
Authorization: "Bearer " + accessToken | |
X-RequestDigest: form digest value | |
"IF-MATCH": etag or "*" | |
"X-HTTP-Method":"MERGE", | |
accept: "application/json;odata=verbose" | |
content-type: "application/json;odata=verbose" | |
content-length:length of post body | |
.NOTES | |
Prerequisite : Invoke-RestSPO function | |
.EXAMPLE | |
Update-SPOFolder -WebUrl $WebUrl -UserName $UserName -Password $Password -FolderUrl '/Shared Documents/Folder To Update' -FolderName "New Folder Name" | |
#> | |
Function Update-SPOFolder(){ | |
Param( | |
[Parameter(Mandatory=$True)] | |
[String]$WebUrl, | |
[Parameter(Mandatory=$True)] | |
[String]$UserName, | |
[Parameter(Mandatory=$False)] | |
[String]$Password, | |
[Parameter(Mandatory=$True)] | |
[String]$FolderUrl, | |
[Parameter(Mandatory=$True)] | |
[String]$FolderName | |
) | |
$Url = $WebUrl + "/_api/web/GetFolderByServerRelativeUrl('" + $FolderUrl + "')" | |
$folderPayload = @{ | |
__metadata = @{'type' = 'SP.Folder' }; | |
} | |
if($FolderName) { | |
$folderPayload['Name'] = $FolderName | |
} | |
$folderPayload = $folderPayload | ConvertTo-Json | |
$contextInfo = Get-SPOContextInfo $WebUrl $UserName $Password | |
Invoke-RestSPO -Url $Url -Method Post -UserName $UserName -Password $Password -Metadata $folderPayload -RequestDigest $contextInfo.GetContextWebInformation.FormDigestValue -ETag "*" -XHTTPMethod "MERGE" | |
} | |
<# | |
.SYNOPSIS | |
Delete Folder | |
.DESCRIPTION | |
Delete Folder operation via SharePoint 2013 REST API. | |
url: http://site url/_api/web/GetFolderByServerRelativeUrl('/Folder Name') | |
method: POST | |
Headers: | |
Authorization: "Bearer " + accessToken | |
X-RequestDigest: form digest value | |
"IF-MATCH": etag or "*" | |
"X-HTTP-Method":"DELETE" | |
.NOTES | |
Prerequisite : Invoke-RestSPO function | |
.EXAMPLE | |
Delete-SPOFolder -WebUrl $WebUrl -UserName $UserName -Password $Password -FolderUrl '/Shared Documents/Folder To Delete' | |
#> | |
Function Delete-SPOFolder(){ | |
Param( | |
[Parameter(Mandatory=$True)] | |
[String]$WebUrl, | |
[Parameter(Mandatory=$True)] | |
[String]$UserName, | |
[Parameter(Mandatory=$False)] | |
[String]$Password, | |
[Parameter(Mandatory=$True)] | |
[String]$FolderUrl | |
) | |
$Url = $WebUrl + "/_api/web/GetFolderByServerRelativeUrl('" + $FolderUrl + "')" | |
$contextInfo = Get-SPOContextInfo $WebUrl $UserName $Password | |
Invoke-RestSPO -Url $Url -Method Post -UserName $UserName -Password $Password -RequestDigest $contextInfo.GetContextWebInformation.FormDigestValue -ETag "*" -XHTTPMethod "DELETE" | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment