-
Notifications
You must be signed in to change notification settings - Fork 4
/
Get-CosmosDocument.ps1
90 lines (77 loc) · 2.98 KB
/
Get-CosmosDocument.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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
function Get-CosmosDocument {
<#
.SYNOPSIS
Gets a specific or all Documents from a specific Collection
.DESCRIPTION
Gets a specific or all Documents from a specific Collection in a specific Database
.PARAMETER DatabaseName
Name of the Database holding the Collection with the Documents you want
.PARAMETER CollectionName
The name of the Collection with the Documents you want
.PARAMETER DocumentId
The id of the document you want
.PARAMETER All
This switch returns all Documents in the Collection you specified in CollectionName
.PARAMETER CosmosDBVariables
This is the Script variable generated by Connect-CosmosDB - no need to supply this variable, unless you get really creative
.EXAMPLE
Get-CosmosDocument -All
Returns all Documents in the Collection specified
.EXAMPLE
Get-CosmosDocument -DatabaseName MyPrivateCosmos -CollectionName Chaos -DocumentId 5598ae69-784f-40e6-bfdb-94d74b3706e7
.NOTES
https://docs.microsoft.com/en-us/rest/api/documentdb/list-documents
https://docs.microsoft.com/en-us/rest/api/documentdb/get-a-document
#>
[CmdletBinding(DefaultParameterSetName='Named')]
param (
[Parameter(Mandatory=$true,
HelpMessage='Name of the Database containing the Document')]
[string]$DatabaseName,
[Parameter(Mandatory=$true,
HelpMessage='Name of the Collection containing the Document')]
[string]$CollectionName,
[Parameter(ParameterSetName='Named',
Mandatory=$true,
HelpMessage='Id of the Document')]
[string]$DocumentId,
[Parameter(ParameterSetName='All')]
[switch]$All,
[Parameter(Mandatory=$false,
HelpMessage="Use Connect-CosmosDB to create this Variable collection")]
[hashtable]$CosmosDBVariables=$Script:CosmosDBVariables
)
begin {
Test-CosmosDBVariable $CosmosDBVariables
$Database = $Script:CosmosDBConnection[($DatabaseName + '_db')]
if (-not $Database) {
Write-Warning "$DatabaseName not found"
continue
}
$Collection = $Script:CosmosDBConnection[$DatabaseName][$CollectionName]
if (-not $Collection) {
Write-Warning "$CollectionName not found"
continue
}
}
process {
$Verb = 'GET'
$Url = '{0}/{1}docs' -f $CosmosDBVariables['URI'],$Collection._self
$ResourceType = 'docs'
$Header = New-CosmosDBHeader -resourceId $Collection._rid -resourceType $ResourceType -Verb $Verb
try {
$Return = Invoke-RestMethod -Uri $Url -Headers $Header -Method $Verb -ErrorAction Stop
if ($All) {
$Return.Documents
}
if ($DocumentId) {
$Return.Documents | Where-Object {$_.id -match $DocumentId}
}
}
catch {
Write-Warning -Message $_.Exception.Message
}
}
end {
}
}