functions/SPClientFolder/ConvertTo-SPClientFolder.ps1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#Requires -Version 3.0

<#
  ConvertTo-SPClientFolder.ps1
 
  Copyright (c) 2017 karamem0
 
  This software is released under the MIT License.
  https://github.com/karamem0/SPClient/blob/master/LICENSE
#>


function ConvertTo-SPClientFolder {

<#
.SYNOPSIS
  Converts list item to folder.
.DESCRIPTION
  The ConvertTo-SPClientFolder function converts the list item to folder.
.PARAMETER ClientContext
  Indicates the client context. If not specified, uses a default context.
.PARAMETER InputObject
  Indicates the list item.
.PARAMETER Retrieval
  Indicates the data retrieval expression.
.EXAMPLE
  ConvertTo-SPClientFolder $item
.INPUTS
  None or SPClient.SPClientFolderConvertPipeBind
.OUTPUTS
  Microsoft.SharePoint.Client.Folder
.LINK
  https://github.com/karamem0/SPClient/blob/master/doc/ConvertTo-SPClientFolder.md
#>


    [CmdletBinding()]
    param (
        [Parameter(Mandatory = $false)]
        [Microsoft.SharePoint.Client.ClientContext]
        $ClientContext = $SPClient.ClientContext,
        [Parameter(Mandatory = $true, Position = 0, ValueFromPipeline = $true)]
        [SPClient.SPClientFolderConvertPipeBind]
        $InputObject,
        [Parameter(Mandatory = $false)]
        [string]
        $Retrieval
    )

    process {
        if ($ClientContext -eq $null) {
            throw "Cannot bind argument to parameter 'ClientContext' because it is null."
        }
        $ClientObject = $InputObject.ClientObject.Folder
        Invoke-ClientContextLoad `
            -ClientContext $ClientContext `
            -ClientObject $ClientObject `
            -Retrieval $Retrieval
        if ($ClientObject.ServerObjectIsNull) {
            throw 'Cannot convert list item to folder because it is not a folder.'
        }
        Write-Output $ClientObject
    }

}