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 path89 Stop Workers.ps1
54 lines (44 loc) · 2 KB
/
89 Stop Workers.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
[CmdletBinding()]
param (
[Parameter()]
[string[]]$EnvironmentName
)
$requiredModulesPath = (Resolve-Path -Path $PSScriptRoot\..\output\RequiredModules).Path
if ($env:PSModulePath -notlike "*$requiredModulesPath*")
{
$env:PSModulePath = $env:PSModulePath + ";$requiredModulesPath"
}
if ($EnvironmentName)
{
Write-Host "Filtering environments to: $($EnvironmentName -join ', ')" -ForegroundColor Magenta
}
Write-Host "Setting up environments: $($environments -join ', ')" -ForegroundColor Magenta
Import-Module -Name $PSScriptRoot\AzHelpers.psm1 -Force
$projectSettings = Get-Content $PSScriptRoot\..\source\Global\ProjectSettings.yml | ConvertFrom-Yaml -ErrorAction Stop
$datum = New-DatumStructure -DefinitionFile $PSScriptRoot\..\source\Datum.yml
$labs = Get-Lab -List | Where-Object { $_ -Like "$($projectSettings.Name)*" }
foreach ($lab in $labs)
{
$lab -match "(?:$($projectSettings.Name))(?<Environment>\w+)" | Out-Null
$envName = $Matches.Environment
if ($EnvironmentName -and $envName -notin $EnvironmentName)
{
Write-Host "Skipping 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 "Stopping all VMs in $($lab.Name) for environment '$envName'" -ForegroundColor Magenta
$lab = Import-Lab -Name $lab -NoValidation -PassThru
Write-Host "Stopping all VMs in $($lab.Name)"
Stop-LabVM -All
}