-
Notifications
You must be signed in to change notification settings - Fork 4
/
Remove-CosmosCollection.ps1
64 lines (54 loc) · 2.04 KB
/
Remove-CosmosCollection.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
function Remove-CosmosCollection {
<#
.SYNOPSIS
Removes a Cosmos Collection
.DESCRIPTION
Removes a Cosmos Collection and all documents it contains
.PARAMETER DatabaseName
Name of the Database containing the Collection you want to remove
.PARAMETER CollectionName
Name of the Collection you want to remove
.PARAMETER CosmosDBVariables
This is the Script variable generated by Connect-CosmosDB - no need to supply this variable, unless you get really creative
.EXAMPLE
Remove-CosmosCollection -DatabaseName MyPrivateCosmos -CollectionName TohuVaBohu
.NOTES
https://docs.microsoft.com/en-us/rest/api/documentdb/delete-a-collection
#>
[CmdletBinding()]
param (
[Parameter(Mandatory=$true,
HelpMessage='Name of your database')]
[string]$DatabaseName,
[Parameter(Mandatory=$true,
HelpMessage='Name of the Collection to remove')]
[string]$CollectionName,
[Parameter(Mandatory=$false,
HelpMessage="Use Connect-CosmosDB to create this Variable collection")]
[hashtable]$CosmosDBVariables=$Script:CosmosDBVariables
)
begin {
Test-CosmosDBVariable $CosmosDBVariables
}
process {
$Collection = $CosmosDBConnection[$DatabaseName][$CollectionName]
if ($Collection) {
$Verb = 'DELETE'
$Url = '{0}/{1}' -f $URI,$Collection._self
$ResourceType = 'colls'
$Header = New-CosmosDBHeader -resourceId $Collection._rid -resourceType $ResourceType -Verb $Verb
try {
Invoke-RestMethod -Uri $Url -Headers $Header -Method $Verb -ErrorAction Stop
$Script:CosmosDBConnection.Remove($CollectionName)
Write-Verbose "$CollectionName has been removed"
}
catch {
Write-Warning -Message $_.Exception.Message
}
} else {
Write-Warning "$CollectionName not found in $DatabaseName"
}
}
end {
}
}