-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAdd-SecurityGroup.ps1
More file actions
executable file
·26 lines (17 loc) · 1 KB
/
Add-SecurityGroup.ps1
File metadata and controls
executable file
·26 lines (17 loc) · 1 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
$data = Get-Content -path "./serverNames.txt"
foreach ($object in $data) {
## Define variables
$serverName = $object
$securityGroupId = "sg-11111111"
$instances = (aws ec2 describe-instances | ConvertFrom-Json).Reservations.Instances
$instance = $instances | Where-Object { $_.Tags -like "*$serverName*" -and $_.State.Name -eq "running"}
$instanceId = $instance.InstanceId
$sgs = aws ec2 describe-instances --instance-id $instanceId --query 'Reservations[*].Instances[*]' | ConvertFrom-Json
[array]$allSGs = $sgs.SecurityGroups.GroupId
Write-Output "`r`nCurrent SGs attached to $serverName are `r`n $allSGs"
$allSGs += $securityGroupId
aws ec2 modify-instance-attribute --instance-id $instanceId --groups $allSGs
$newSgs = aws ec2 describe-instances --instance-id $instanceId --query 'Reservations[*].Instances[*]' | ConvertFrom-Json
$allNewSGs = $newSgs.SecurityGroups.GroupId
Write-Output "`r`nNew SGs attached to $instance are `r`n $allNewSGs"
}