-
Notifications
You must be signed in to change notification settings - Fork 1
/
Func_Get-OneDriveChildItem.ps1
72 lines (59 loc) · 2.4 KB
/
Func_Get-OneDriveChildItem.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
65
66
67
68
69
70
71
72
################################################################################
# Author : Antony Onipko
# Copyright : (c) 2016 Antony Onipko. All rights reserved.
################################################################################
# This work is licensed under the
# Creative Commons Attribution-ShareAlike 4.0 International License.
# To view a copy of this license, visit
# https://creativecommons.org/licenses/by-sa/4.0/
################################################################################
Function Get-OneDriveChildItem {
<#
.SYNOPSIS
Gets the items in the specified path, or that are children of the specified Item ID from the OneDrive API. By default gets the items in the default drive's root. Can be used with either a relative path, or an item id.
.EXAMPLE
Get-OneDriveChildItem # Gets all the items in the default drive's root.
.EXAMPLE
"Documents" | Get-OneDriveChildItem
.EXAMPLE
Get-OneDriveChildItem -ItemId "1234ABC!123"
#>
[CmdletBinding(DefaultParameterSetName='Item Path')]
[Alias('odgci','odls')]
[OutputType([PsObject])]
Param
(
# API resource path.
[Parameter(Mandatory=$False,
Position=1,
ValueFromPipeline=$True,
ValueFromPipelineByPropertyName=$True,
ParameterSetName='Item Path')]
[Alias('ApiUrl', 'Resource')]
[string]$Path,
# API item ID.
[Parameter(Mandatory=$True,
Position=1,
ValueFromPipelineByPropertyName=$True,
ParameterSetName='Item ID')]
[Alias('id')]
[string]$ItemId,
# Gets the items in the specified path, and all child items.
[Parameter(Mandatory=$False)]
[switch]$Recurse
)
Process {
if ($ItemId) {
$rsp = Get-OneDriveItem -ItemId (joinPath $ItemId 'children')
} else {
$rsp = Get-OneDriveItem -Path (joinPath $Path 'children' ':/')
}
Write-Output $rsp
if ($Recurse) {
$rsp | ? { [int]$_.folder.childCount -gt 0 } | % {
Get-OneDriveChildItem -ItemId $_.id -Recurse
}
}
}
}
Export-ModuleMember -Function 'Get-OneDriveChildItem' -Alias 'odgci', 'odls'