This repository has been archived by the owner on Jan 23, 2025. It is now read-only.
forked from raandree/Microsoft365DscWorkshop
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path97 Remove Workers and DevOps Project.ps1
74 lines (61 loc) · 2.83 KB
/
97 Remove Workers and DevOps Project.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
[CmdletBinding()]
param (
[Parameter()]
[string[]]$EnvironmentName
)
$requiredModulesPath = (Resolve-Path -Path $PSScriptRoot\..\output\RequiredModules).Path
if ($env:PSModulePath -notlike "*$requiredModulesPath*")
{
$env:PSModulePath = $env:PSModulePath + ";$requiredModulesPath"
}
Import-Module -Name $PSScriptRoot\AzHelpers.psm1 -Force
$datum = New-DatumStructure -DefinitionFile $PSScriptRoot\..\source\Datum.yml
$labs = Get-Lab -List | Where-Object { $_ -Like "$($datum.Global.ProjectSettings.Name)*" }
foreach ($lab in $labs)
{
$lab -match "(?:$($datum.Global.ProjectSettings.Name))(?<Environment>\w+)" | Out-Null
$envName = $Matches.Environment
if ($EnvironmentName -and $envName -notin $EnvironmentName)
{
Write-Host "Skipping lab '$lab' for environment '$envName'." -ForegroundColor Yellow
continue
}
$environment = $datum.Global.Azure.Environments.$envName
$setupIdentity = $environment.Identities | Where-Object Name -EQ M365DscSetupApplication
Write-Host "Connecting to environment '$envName'" -ForegroundColor Magenta
$param = @{
TenantId = $environment.AzTenantId
TenantName = $environment.AzTenantName
SubscriptionId = $environment.AzSubscriptionId
ServicePrincipalId = $setupIdentity.ApplicationId
ServicePrincipalSecret = $setupIdentity.ApplicationSecret | ConvertTo-SecureString -AsPlainText -Force
}
Connect-M365Dsc @param -ErrorAction Stop
Write-Host "Successfully connected to Azure environment '$envName'."
Write-Host "Removing lab '$lab' for environment '$envName'" -ForegroundColor Magenta
$lab = Import-Lab -Name $lab -NoValidation -PassThru
Remove-Lab -Confirm:$false
Write-Host "Successfully removed lab '$($lab.Name)'."
}
Set-VSTeamAccount -Account "https://dev.azure.com/$($datum.Global.ProjectSettings.OrganizationName)/" -PersonalAccessToken $datum.Global.ProjectSettings.PersonalAccessToken
Write-Host "Connected to Azure DevOps organization '$($datum.Global.ProjectSettings.OrganizationName)' with PAT."
try
{
Get-VSTeamProject -Name $datum.Global.ProjectSettings.ProjectName | Out-Null
Remove-VSTeamProject -Name $datum.Global.ProjectSettings.ProjectName -Force -ErrorAction Stop
Write-Host "Project '$($datum.Global.ProjectSettings.ProjectName)' has been removed."
if ($pool = Get-VSTeamPool | Where-Object Name -EQ $datum.Global.ProjectSettings.AgentPoolName)
{
Remove-VSTeamPool -Id $pool.Id
Write-Host "Agent pool '$($datum.Global.ProjectSettings.AgentPoolName)' has been removed."
}
else
{
Write-Host "Agent pool '$($datum.Global.ProjectSettings.AgentPoolName)' does not exists."
}
}
catch
{
Write-Host "Project '$($datum.Global.ProjectSettings.ProjectName)' does not exists."
}
Write-Host 'Finished cleanup.'