-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathRemove-AzDoProject.ps1
78 lines (65 loc) · 2.44 KB
/
Remove-AzDoProject.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
function Remove-AzDoProject {
<#
.SYNOPSIS
Function to create an Azure DevOps project
.DESCRIPTION
Function to create an Azure DevOps project
.EXAMPLE
New-AzDoProject -CollectionUri "https://dev.azure.com/contoso" -ProjectName "Project 1"
This example creates a new private Azure DevOps project
.EXAMPLE
New-AzDoProject -CollectionUri "https://dev.azure.com/contoso" -ProjectName "Project 1" -Visibility 'public'
This example creates a new public Azure DevOps project
.EXAMPLE
@("MyProject1","Myproject2") | New-AzDoProject -CollectionUri "https://dev.azure.com/contoso"
This example creates two new Azure DevOps projects using the pipeline.
.EXAMPLE
[pscustomobject]@{
ProjectName = 'Project 1'
Visibility = 'public'
Description = 'This is the best project'
},
[pscustomobject]@{
ProjectName = 'Project 1'
Description = 'This is the best project'
} | New-AzDoProject -PAT $PAT -CollectionUri $CollectionUri
This example creates two new Azure DevOps projects using the pipeline.
#>
[CmdletBinding(SupportsShouldProcess, ConfirmImpact = 'High')]
[OutputType([System.Collections.ArrayList])]
param (
# Collection URI. e.g. https://dev.azure.com/contoso.
# Azure Pipelines has a predefined variable for this.
[Parameter(Mandatory, ValueFromPipelineByPropertyName)]
[string]
$CollectionUri,
# Name of the project.
[Parameter(Mandatory, ValueFromPipelineByPropertyName, ValueFromPipeline)]
[string[]]
$ProjectName
)
begin {
Write-Verbose "Starting function: Remove-AzDoProject"
$result = @()
}
Process {
foreach ($name in $ProjectName) {
$projectId = (Get-AzDoProject -CollectionUri $CollectionUri -ProjectName $name).ProjectID
$params = @{
uri = "$CollectionUri/_apis/projects/$projectID"
version = "7.1-preview.4"
method = 'DELETE'
}
if ($PSCmdlet.ShouldProcess($CollectionUri, "Delete project named: $($PSStyle.Bold)$name$($PSStyle.Reset)")) {
$result += Invoke-AzDoRestMethod @params
} else {
Write-Verbose "Calling Invoke-AzDoRestMethod with $($params| ConvertTo-Json -Depth 10)"
}
}
}
end {
if ($result) {
$result
}
}
}