functions/other/Get-FolderItems.ps1
function Get-FolderItems { param ( [Parameter(Position = 0, Mandatory = $true)] [string] $MailboxName, [Parameter(Position = 1, Mandatory = $false)] [psobject] $AccessToken, [Parameter(Position = 2, Mandatory = $false)] [string] $FolderPath, [Parameter(Position = 3, Mandatory = $false)] [PSCustomObject] $Folder, [Parameter(Position = 4, Mandatory = $false)] [switch] $ReturnSize, [Parameter(Position = 5, Mandatory = $false)] [string] $SelectProperties, [Parameter(Position = 6, Mandatory = $false)] [string] $Filter, [Parameter(Position = 7, Mandatory = $false)] [string] $Top, [Parameter(Position = 8, Mandatory = $false)] [string] $OrderBy, [Parameter(Position = 9, Mandatory = $false)] [bool] $TopOnly ) Begin { if ($AccessToken -eq $null) { $AccessToken = Get-AccessToken -MailboxName $MailboxName } if (![String]::IsNullorEmpty($FolderPath)) { $Folder = Get-FolderFromPath -FolderPath $FolderPath -AccessToken $AccessToken -MailboxName $MailboxName } if (![String]::IsNullorEmpty($Filter)) { $Filter = "`&`$filter=" + $Filter } if (![String]::IsNullorEmpty($Orderby)) { $OrderBy = "`&`$OrderBy=" + $OrderBy } $TopValue = "1000" if (![String]::IsNullorEmpty($Top)) { $TopValue = $Top } if ([String]::IsNullorEmpty($SelectProperties)) { $SelectProperties = "`$select=ReceivedDateTime,Sender,Subject,IsRead" } else { $SelectProperties = "`$select=" + $SelectProperties } if ($Folder -ne $null) { $HttpClient = Get-HTTPClient($MailboxName) $RequestURL = $Folder.FolderRestURI + "/messages/?" + $SelectProperties + "`&`$Top=" + $TopValue + $Filter + $OrderBy if ($ReturnSize.IsPresent) { $PropName = "PropertyId" if ($AccessToken.resource -eq "https://graph.microsoft.com") { $PropName = "Id" } $RequestURL = $Folder.FolderRestURI + "/messages/?`$select=ReceivedDateTime,Sender,Subject,IsRead`&`$Top=" + $TopValue + "`&`$expand=SingleValueExtendedProperties(`$filter=$PropName%20eq%20'Integer%200x0E08')" + $Filter + $OrderBy } write-host $RequestURL do { $JSONOutput = Invoke-RestGet -RequestURL $RequestURL -HttpClient $HttpClient -AccessToken $AccessToken -MailboxName $MailboxName foreach ($Message in $JSONOutput.Value) { Add-Member -InputObject $Message -NotePropertyName ItemRESTURI -NotePropertyValue ($Folder.FolderRestURI + "/messages('" + $Message.Id + "')") Write-Output $Message } $RequestURL = $JSONOutput.'@odata.nextLink' } while (![String]::IsNullOrEmpty($RequestURL) -band (!$TopOnly)) } } } |