CRUD operations against SharePoint Folder via SharePoint 2013 REST API
[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