-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathRemove-AzDoProject.ps1
More file actions
87 lines (76 loc) · 2.99 KB
/
Remove-AzDoProject.ps1
File metadata and controls
87 lines (76 loc) · 2.99 KB
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
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)]
[ValidateScript({ Validate-CollectionUri -CollectionUri $_ })]
[string]
$CollectionUri,
# Name of the project.
[Parameter(Mandatory, ValueFromPipelineByPropertyName, ValueFromPipeline)]
[string[]]
$ProjectName
)
Process {
Write-Verbose "Starting function: Remove-AzDoProject"
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)")) {
try {
Invoke-AzDoRestMethod @params | ForEach-Object {
[PSCustomObject]@{
CollectionURI = $CollectionUri
ProjectName = $name
ProjectID = $_.id
Removed = $true
}
}
} catch {
Write-Error "Error Deleting project '$projectname' in collectionURI '$CollectionUri' Error: $_"
[PSCustomObject]@{
CollectionURI = $CollectionUri
ProjectName = $name
ProjectID = $projectId
Removed = $false
}
continue
}
} else {
Write-Verbose "Calling Invoke-AzDoRestMethod with $($params| ConvertTo-Json -Depth 10)"
}
}
}
}